记住我功能,使用的是cookie实现的
接之前的案例修改:
1.ShiroConfig.java中添加rememberMeManager的配置.
为了可读性,就不把所有代码堆到ShiroConfig这个类里
建一个配置类
>public class RememberMeConfig {
/**
* cookie设置
* */
public SimpleCookie rememberMeCookie(){
//这个参数是cookie的名称,对应前端的checkbox的name = rememberMe
SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
//cookie生效时间30天,单位秒;
simpleCookie.setMaxAge(2592000);
return simpleCookie;
}
/**
* cookie管理对象;记住我功能
* @return
*/
public CookieRememberMeManager rememberMeManager(){
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();
cookieRememberMeManager.setCookie(rememberMeCookie());
// cookieRememberMeManager.setCipherKey用来设置加密的Key,参数类型byte[],字节数组长度要求16
// cookieRememberMeManager.setCipherKey(Base64.decode("3AvVhmFLUs0KTA3Kprsdag=="));
cookieRememberMeManager.setCipherKey("ZHANGXIAOHEI_CAT".getBytes());
return cookieRememberMeManager;
}
}
2注入到SecurityManager,在ShiroConfig配置bean
@Bean
DefaultWebSecurityManager securityManager() {
DefaultWebSecurityManager manager = new DefaultWebSecurityManager ( );
//自定义的Realm交给manager
manager.setRealm (myRealm ( ));
// 自定义缓存实现 使用redis
// manager.setCacheManager(cacheManager());
// 自定义session管理 使用redis
// manager.setSessionManager(SessionManager());
// 使用记住我,注入配置
manager.setRememberMeManager(new RememberMeConfig ().rememberMeManager ());
return manager;
}
3.修改login.html
<form method="post" action="/tologin">
用户名:<input type="text" name="name"/> <br/>
密码:<input type="password" name="password"><br/>
<!--记住我功能-->
<input type="checkbox" name="rememberMe">记住我<br>
<input type="submit" value="登陆">
</form>
4.测试,使用wang5 123456登陆并选择记住我
结语:欢迎批评指正,交流~