前言
本章讲解一下Shiro的记住我的功能
方法
1.概念
首先要澄清一点的是,这里的记住我并不是记住用户名和密码。
shiro的记住我是一种基于cookie实现的方式,特定的页面在关掉浏览器后(session消失)也可以进行访问的功能!
2.实现步骤
1)前台登录页面修改
如果需要记住我的功能,那么前台页面需要一个checkbox多选框来让用户进行勾选。
这里我就不进行说明了。丑一点没关系哈。
2)controller登录方法修改
3)修改shiro配置文件
<!-- 配置Shiro的SecurityManager -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm"/>
<property name="cacheManager" ref="cacheManager"/>
<property name="sessionManager" ref="sessionManager"/>
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
<!-- rememberMeCookie -->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberMe"/>
<property name="httpOnly" value="true"/>
<property name="maxAge" value="2592000"/><!-- 30天 -->
</bean>
<!-- rememberMe管理器 -->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="rememberMeCookie"/>
</bean>
这里主要配置了cookie存在的有效期,我这里设置了30天。
4)在需要记住我访问的页面路径加入过滤器
上面显示student.jsp页面需要在浏览器关闭后也可以进行访问,那么我们在登录的时候勾选记住我就ok了!
注意:在验证程序的过程中我发现IE是无法验证出来的,我还不是很清楚为什么?,、这里我们来使用chrome验证:
进行登录,查找相关cookie:
我们可以发现,我们的cookie成功的出现,并且有效期一个月!
我们退出浏览器继续访问student.jsp:
我们发现,它依然可以访问。