1.根據系統安全首先將用到的ActiveUser和SysPermission這兩個類進行系列化接口
2.在安全管理氣的屬性中配置rememberMe,並設置失效時間,
3.在頁面中添加rememberMe這個選項
4.在自定義的form認證過濾器中的bean屬性中添加rememberMe
記住我
用戶登陸選擇“自動登陸”本次登陸成功會向cookie寫身份信息,下次登陸從cookie中取出身份信息實現自動登陸。
用戶身份實現java.io.Serializable接口
向cookie記錄身份信息需要用戶身份信息對象實現序列化接口,如下:
public class ActiveUser implements Serializable
配置rememberMeManager
<!-- 安全管理器 -->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="userRealm" />
<property name="sessionManager" ref="sessionManager" />
<property name="cacheManager" ref="cacheManager"/>
<!-- 記住我 -->
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
<!-- rememberMeManager管理器 -->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="rememberMeCookie" />
</bean>
<!-- 記住我cookie -->
<bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<constructor-arg value="rememberMe" />
<!-- 記住我cookie生效時間30天 -->
<property name="maxAge" value="2592000" />
</bean>
FormAuthenticationFilter配置
修改formAuthenticationFitler添加頁面中“記住我checkbox”的input名稱:
<bean id="formAuthenticationFilter"
class="cn.itcast.ssm.shiro.MyFormAuthenticationFilter">
<!-- 表單中賬號的input名稱 -->
<property name="usernameParam" value="usercode" />
<!-- 表單中密碼的input名稱 -->
<property name="passwordParam" value="password" />
<property name="rememberMeParam" value="rememberMe"/>
</bean>
登陸頁面
在login.jsp中添加“記住我”checkbox。
<TR>
<TD></TD>
<TD>
<input type="checkbox" name="rememberMe" />自動登陸
</TD>
</TR>