spring-shiro记住我功能(session无法获取)

转载:https://blog.csdn.net/u011277123/article/details/70214599

it浪子号 2017-04-09 18:57

记住我功能在各大网站是比较常见的,实现起来也是大同小异,主要就是利用cookie来实现,而shiro对记住我功能的实现也是比较简单的,只需要几步即可。

Shiro提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,基本流程如下:

(1)、首先在登录页面选中RememberMe然后登录成功;如果是浏览器登录,一般会把RememberMe的Cookie写到客户端并保存下来;

(2)、关闭浏览器再重新打开;会发现浏览器还是记住你的;

(3)、访问一般的网页服务器端还是知道你是谁,且能正常访问;

1、记住我管理器

spring-shiro记住我功能(session无法获取)_第1张图片

2、记住我Cookie

spring-shiro记住我功能(session无法获取)_第2张图片

3、注入到shiro的安全管理器中

spring-shiro记住我功能(session无法获取)_第3张图片

shiro记住我功能就这么简单,不过这样是有问题的,什么问题呢?那就是通过记住我的功能的虽然可以不用登录就能进入网站,不过此时用户的session等信息是无法获取的,怎么办呢?很简单,实现一个过滤器,拦截rememberMe功能的请求即可。如下:

1、实现rememberMe的过滤器

spring-shiro记住我功能(session无法获取)_第4张图片

2、shiro配置文件添加此bean

spring-shiro外篇记住我功能

3、在shiro的主过滤器中添加此FIlter

spring-shiro记住我功能(session无法获取)_第5张图片

好了记住我功能就到这里了,不过要记住一点,如果使用了authc的过滤的url的是不能使用记住我功能的,切记,至于什么原因,很好理解。有一些操作你是不需要别人在记住我功能下完成的,这样很不安全,所以shiro规定记住我功能最多得user级别的,不能到authc级别。

你可能感兴趣的:(shiro安全框架)