问题详述:在Shiro中添加Remember me功能后,只要勾选Remember me选项为true的时候,浏览器就会跳转到一个不可达页面,并且在Chrome中显示HTTP 500错误。

问题追踪:

1. 设置Shiro的日志权限级别为DEBUG

log4j设置

# Default Shiro logging
log4j.logger.org.apache.shiro=DEBUG

2.点击登录按钮,查看日志输入:

DEBUG - Authentication successful for token [org.apache.shiro.authc.UsernamePasswordToken - admin, rememberMe=true].  Returned account [com.ferelife.emms.sys.ActiveUser@3b907d0f]
DEBUG - No SecurityManager available in subject context map. Falling back to SecurityUtils.getSecurityManager() lookup.
DEBUG - Context already contains a session. Returning.
DEBUG - No SecurityManager available in subject context map. Falling back to SecurityUtils.getSecurityManager() lookup.
DEBUG - Added HttpServletResponse Cookie [rememberMe=deleteMe; Path=/emms; Max-Age=0; Expires=Tue, 29-May-2018 08:45:08 GMT]
DEBUG - Added HttpServletResponse Cookie [rememberMe=aG7QqBPwS+FLAqZYwbdmwSpBD39s3OXjikv8iLYQ2NnKP9pXp6HDF2KkVsXtJF/1LlKFbm5sxoXdyMPycyU3pZKHXd6sznZaCvOL5b+wf88f7Rmwnl/3gUAWs2deu2SjHhXzF0qwiHmrk2eJ16/1uDmOyhvGuMvIhp2Aya4rAWvyBtONhDPvyTtLA8vcuE16OS00FgZGXRCogXS1W/gOKBBXEnrB77vJpzB2opMKqaESUoHFN5J1zNlHvB/3263aJeFWKuRWP5qF6ulzT2yyt14bqfLw0IbYp4/z2lJ2w+cdum8OFukhoEr68WdiM4RCS1NefDeM7EAeNEwZaeYO/Vsv9iGzYHGkjGECaHtkUcwqhorveqjymm1MMRRLdQ0/G8/93DpGd49124CGlB8OgWLZx4iS6yQwM7j7614DcJBchnrg/2x07tpvNeTGNkK6qbu1DS4to9JBQ4m73yTTpKVtMDD9exiA+WcDJ2gKpjIbVKP4RJntjte1g34hqC5UTg1H1q6/YxXMlDQmD+xTFbiE0zimcwe2/XZEhFaKKfV33E+nFmWx0b+FbbNBqsG04ZIaynjd4CJoKQAHcXtzdwb3v2GMJiuTRid3Ge9C29SWTucS6NMvNDQPtShsxyoqWgM8Iw5hitT9hc3XrX1LskZ2G; Path=/emms; Max-Age=2592000; Expires=Fri, 29-Jun-2018 08:45:08 GMT; HttpOnly]

  后出现cookie没有下面的shiro输入,至此怀疑cookies大小限制导致浏览器页面不可达,

查阅资料得到

https://blog.csdn.net/proglovercn/article/details/45514705

chrome中cookies大小限制在4Kb,由于在Remember me中将User通过base64加密后,大小大于4KB,导致cookies不能正常设置到浏览器中,导致其跳转失败

问题代码追溯:

在UserRleam中的protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException 方法中查询了菜单相关的权限,并将该权限设置到了User对象中,从而导致User对象的大小持续上升,从而导致Remember编码后的对象大于4Kb从而无法进行cookies设置值,从而跳转失败。

问题解决:

将User设置菜单以及相关操作放置到登录方法中,将如上代码移动到User登录方法中即可解决问题,此次,该500错误解决

最新文章

  1. 15.Xcode8 升级遇到的问题
  2. activity启动模式区别和优化
  3. python的变量作用域
  4. iOS设计模式——Category
  5. suse安装软件命令
  6. Apache + Tomcat + mod_jk实现集群服务及session共享
  7. Android中文API(129) —— AudioManager
  8. BZOJ 3544: [ONTAK2010]Creative Accounting [set]
  9. 使用shell操作HDFS
  10. 问题(一) DebugAugmenter
  11. BZOJ_2734_[HNOI2012]集合选数_构造+状压DP
  12. CoCos2dx开发:更换导出的app名称和图标
  13. mysqladmin实用工具
  14. [Bat]UNC路径不支持的2种解决方法
  15. LeetCode:1_Two_Sum | 两个元素相加等于目标元素 | Medium
  16. Linux ELF 文件格式
  17. Node入门教程(13)第十一章:mocha单元测试+should断言库+istanbul覆盖率测试+art-template
  18. [LightOJ 1265] Island of Survival
  19. 大型开放式网络课程MOOC的一点体会
  20. Android Activity与Fragment生命周期

热门文章

  1. 【学亮IT手记】MySql行列转换案例
  2. mac下virtualbox中centos6.5虚拟机实现全屏和调整分辨率
  3. Codeforces 1154G Minimum Possible LCM
  4. Golang的时间生成,格式化,以及获取函数执行时间的方法
  5. Session和Cookie介绍及常见httpcode
  6. Delphi (Library Path Browsing Path)
  7. SpringBoot之显示本地图片范例
  8. 九、.net core用orm继承DbContext(数据库上下文)方式操作数据库
  9. c++创建文件夹以及子文件夹
  10. Nginx 完整安装篇