解决shiro会话标识未更新问题

时间:2015-04-12 21:07:49   收藏:0   阅读:982
要解决会话标识未更新的安全问题,就需要在做登录验证时生成新的session,所以需要先将原来的session失效。 

一般的解决方法如下:

public void login(HttpServletRequest request, ...){
     // 让旧session失效
     request.getSession(true).invalidate();
     //登录验证
}

但是,如果使用了shiro框架,这样做会报错:...Session already invalidated。原因是shiro对HttpSession进行了一层包装,你直接让原生的session失效,没有通知shiro,shiro再去使用session时就会报错了。
解决方法,不要使用原生的失效方法,而是使用shiro自己提供的api方法:SecurityUtils.getSubject().logout();

public void login(String username,String password){
     // 让旧session失效
     SecurityUtils.getSubject().logout();
     //登录验证
}


原文:http://blog.csdn.net/yycdaizi/article/details/45013397

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!