Shiro之记住我功能的实现
首先在配置文件中加入
<!--配置securityManager,注意在Spring中使用的是DefaultWebSecurityManager,在非web环境下,使用DefaultSecurityManager-->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!--配置数据源-->
<property name="realm" ref="realm"/>
<!--配置Shiro的SessionManager对象-->
<property name="sessionManager" ref="sessionManager"/>
<!--配置自定义的Redis缓存管理对象--> <property name="cacheManager" ref="redisCacheManager"/>
<!--配置记住我管理对象--> <property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
<!--记住我管理器-->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="cookie"/>
</bean> <bean id="cookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<!--前端传过来记住我的属性名-->
<constructor-arg value="rememberMe"/>
<!--登录过期时间-->
<property name="maxAge" value="2000000"/>
</bean>
拦截器器修改拦截用户类型
/**=user
在controller层中, token中添加记住我
Subject subject = ShiroUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password,rememberMe);
subject.login(token);
前端增加个单选框,name属性设置为rememberMe
`注意:一定要将这个用户实体进行序列化如
public class User implements Serializable {
//TODO
}
注意:
如果你想在测试是不是记住我进来的,可以先在登陆,勾选记住我,然后关闭浏览器,在访问,不用登陆就可访问说明是记住我进来。 此外记住我的功能不安全,因此建议在项目中不要使用,一定要使用,就要细化权限。一些敏感操作,可以让用户重新登陆才能进行操作。
正文到此结束(点击广告是对作者最大的支持)