在了解了shiro中的缓存管理之后,我们接下来再来测试shiro中的“记住我”功能。
1、前提约束
完成shiro与spring的整合 https://www.jianshu.com/p/a352b6338833
2、理论解释
在通常的认证管理当中,每次登录都需要输入账号密码,用户体验不好。能否让用户在一段时间之内只登录一次。那就意味着必须把用户的登录信息存储起来,而我们这里选择将用户的信息存储在cookie当中。
3、操作步骤
- 在applicationContext-shiro.xml中加入以下标签
<!--记住我cookie-->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberMe"/>
<!--记住我的cookie的有效期,默认单位是秒 7*24*60*60-->
<property name="maxAge" value="604800"/>
</bean>
<!--rememberMeManager管理器-->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="rememberMeCookie"/>
</bean>
<!--安全管理器-->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm"/>
<property name="cacheManager" ref="cacheManager"/>
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
- 在认证逻辑当中确保设置记住我
UsernamePasswordToken usernamePasswordToken = (UsernamePasswordToken)authenticationToken;
usernamePasswordToken.setRememberMe(true);
- 确保cookie没有被禁用
以上就是shiro的“记住我”功能实现。