Nancy总结(二)记一次Nancy 框架中遇到的坑

记一次Nancy 框架中遇到的坑

   前几天,公司一个项目运行很久的Nancy框架的网站,遇到了一个很诡异的问题。Session 对象跳转到另外一个页面的时候,session对象被清空了,导致用户登录不上。搞了两天,终于解决了。于是把它记录下来,以避免其他人也碰到这种情况。

  起因

  公司一个Nancy 框架 开发的web网站,以前一直都是好的,nancy 框架也用在了很多项目里面,基本上已经很成熟很稳定了,但是在前几天发布某个web网站的时候,竟然出现部分用户登录不上的情况。刚开始以为是人员的权限有问题,于是检查各个人员的权限。但是发现权限设置没问题,而且同一个角色下的两个人,竟然还会出现一个用户能登陆,而另一个却不能登陆的诡异情况。

 

  调查

    在确认不是系统权限设置的问题之后,开始debug 跟踪调试。发现本来已经登陆成功,存储用户登陆信息的session对象,在跳转到index 页面之后,session 对象竟然不清空了,这是怎么回事呢,可是也不是所有的用户的登陆session都会被清空,而是部分人的session对象被清空了,而且登陆功能,在前期一直都是正常的,没出现过这种情况。

  1. 首先怀疑session存储的对象,最近是不是有变动,询问后,发现,User 对象最近确实是增加了一个字段,但是增加一个字段,怎么会影响到session的存储呢,

  2. 把新加的字段去掉,原先不能登陆的用户,竟然能够可以登陆成功,但是其他的一些用户,还是不能登陆,于是开始比较能登陆的用户和不能登陆的用户的数据有什么不同。有可能还是数据的原因,对比之后发现用户数据基本没什么问题,但是普遍的是能登陆上的用户的信息都比不能登陆上的用户的信息要少。

  3. 于是基本可以断定是由于session 存储的用户数据的大小导致的。可是,Nancy 框架下的session 会对 存储数据的大小有限制呢。

 

  解决

  既然知道问题出在哪,于是去jabbr 里Nancy聊天室问框架的作者。老外表示:Nancy的session机制, 是基于cookie 的,客户端和服务器交互的cookie 大小限制在4k 以下,超过4k 就会获取不到。

  但是经过我们的反复测试,确定限制是在2k,而不是4k,我去,坑啊。但是不管是4k还是2k 确实是有这个限制存在。 

  于是问他这个能否设置大一点。老外答复说:大小不能设置,只能修改存存储对象的大小,因为他们在设计之初的时候,session 就不是用来存用户的全部信息的。而是只存用户主要信息或是用户的唯一ID ,到用到用户的信息的时候,再去数据库里面读取。

  看来只能减少用户信息的大小了。于是去掉了Session 里面的User 对象de 一些没有用的字段。果然所有的用户都能进了。 折腾了2天的问题,终于解决。

时间: 2024-11-13 06:32:24

Nancy总结(二)记一次Nancy 框架中遇到的坑的相关文章

iOS文本布局探讨之二——关于TextKit框架中的字体描述

一.引言         UIFont是iOS开发中处理文本字体的类,关于UIFont的相关内容,以前的一篇博客有详细介绍,本片博客主要介绍关于动态字体的应用与字体描述类NSFontDescriptor的应用. UIFont应用介绍:http://my.oschina.net/u/2340880/blog/397115. 二.iOS系统中的动态字体         所谓动态字体,是指在应用使用中,用户可以动态调整字体的风格字号等.在iOS7及之后的iOS系统版本,TextKit框架中提供了一个新

iOS中CoreData数据管理系列二——CoreData框架中三个重要的类

iOS中CoreData数据管理系列二--CoreData框架中三个重要的类 一.引言     在上一篇博客中,介绍了iOS中使用CoreData框架设计数据模型的相关步骤.CoreData框架中通过相关的类将数据--数据模型--开发者无缝的衔接起来.NSManagedObjectModel对应数据模型,即上篇博客中我们创建的.xcdatamodeld文件:NSPersistentStoreCoordinator相当于数据库与数据模型之间的桥接器,通过NSPersistentStoreCoord

背景建模技术(二):BgsLibrary的框架、背景建模的37种算法性能分析、背景建模技术的挑战

背景建模技术(二):BgsLibrary的框架.背景建模的37种算法性能分析.背景建模技术的挑战 1.基于MFC的BgsLibrary软件下载 下载地址:http://download.csdn.net/detail/frd2009041510/8691475 该软件平台中包含了37种背景建模算法,可以显示输入视频/图像.基于背景建模得到的前景和背景建模得到的背景图像,还可以显示出每种算法的计算复杂度等等.并且,测试的可以是视频.图片序列以及摄像头输入视频.其界面如下图所示: 2.BgsLibr

谈谈HTML基础代码学习三步走战略:一看、二记、三练

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 虽然现在建立一个网站很简单,只需要三步:一注册域名,二租用空间,三上传程序.但是建立网站之后一直到网站正式上线却需要很多步骤,首先是整理网站的结构.然后是对整个网站的文件代码进行分析与增减,而这个时候问题就出来了,很多站长不会HTML代码,怎么办?一个字:学. 如果你想要在互联网中大展拳脚,那么学会HTML代码是很有必要的,首先HTML代码能

Caliburn Micro 框架中Windows Phone 8使用研究(二)页面导航

背景 对于MVVM 架构的WP程序,一个很关键的问题就是导航,以及导航传参.有过经验的人很清楚WP导航只能在View中进行,并且导航参数也只能在NavigatedTo等View的事件中获取,如此我们便不得不在xaml.cs文件中加上处理,以获取导航参数然后再通过导航参数构造ViewModel.这个过程很痛苦,因为我们不得不再两个文件中来回切换来看我们的逻辑代码. 那么接下来我们看下CM作者的厉害之处(必须承认,真的很厉害), 让我们看下CM框架中导航是什么样子的: 不带参数的情况下: 在View

Python的Flask框架中实现简单的登录功能的教程

  Python的Flask框架中实现简单的登录功能的教程,登录是各个web框架中的基础功能,需要的朋友可以参考下 回顾 在前面的系列章节中,我们创建了一个数据库并且学着用用户和邮件来填充,但是到现在我们还没能够植入到我们的程序中. 两章之前,我们已经看到怎么去创建网络表单并且留下了一个实现完全的登陆表单. 在这篇文章中,我们将基于我门所学的网络表单和数据库来构建并实现我们自己的用户登录系统.教程的最后我们小程序会实现新用户注册,登陆和退出的功能. 为了能跟上这章节,你需要前一章节最后部分,我们

Python的Bottle框架中使用微信API的示例

  这篇文章主要介绍了在Python的Bottle框架中使用微信API的示例,作者还在文中给出了一个生成的微信可扫描的二维码图,需要的朋友可以参考下 微信这个东西估计宅男没几个不熟悉的吧,微信经过这么两年多的发展终于向开放平台跨出了友好的一步.蛋疼的以为微信会出一个详细的api等接口,兴奋不已的去申请了微信公共平台,然后开始找各种api的位置-- 花费了近一个小时,依然没找到-- 最后动用Google大杀器,终于找到了这么个链接.我了个去的,没比这还简单的api文档了吧. 最让人无法理解的是:居

ssh框架中 新起线程使用hibernate

问题描述 ssh框架中 新起线程使用hibernate 项目为ssh框架,现有需求: 项目启动时启动一个定时执行任务,处理相关逻辑. 我 希望在定时执行任务中使用hibernate,请问该如何弄 ,请大神指教.. 解决方案 spring的定是处理 建一个类继承QuartzJobBean 你执行hibernate的dao 重写executeInternal方法里面放你的逻辑 解决方案二: 自己顶一下 ,别沉,.....

深度学习框架中的魔鬼:探究人工智能系统中的安全问题

ISC 2017中国互联网安全大会举办了人工智能安全论坛. 我们把论坛总结成为一系列文章,本文为系列中的第一篇. 深度学习引领着新一轮的人工智能浪潮,受到工业界以及全社会的广泛关注. 虽然大家对人工智能有很多美好的憧憬,但是现实是残酷的 - 随着一批深度学习应用逐渐开始变成现实,安全问题也渐渐显现出来. 人工智能应用面临来自多个方面的威胁:包括深度学习框架中的软件实现漏洞.对抗机器学习的恶意样本生成.训练数据的污染等等.这些威胁可能导致人工智能所驱动的识别系统出现混乱,形成漏判或者误判,甚至导致