登录网站在页面选择"记住我"然后登录成功,此时关闭页面可以直接通过地址无需登录直接访问登录后的内容
页面需要的代码
function doLogin(){
var params={
username:$("#usernameId").val(),
password:$("#passwordId").val(),
isRememberMe:$("#rememberId").prop("checked"),
}
var url="user/doLogin";
console.log("params",params);
$.post(url,params,function(result){
if(result.state==1){
//跳转到indexUI对应的页面
location.href="doIndexUI?t="+Math.random();
}else{
$(".login-box-msg").html(result.message);
}
return false;//防止刷新时重复提交
});
}
Controller层
@RequestMapping("doLogin")
public JsonResult doLogin(String username,String password,boolean isRememberMe){
//1.获取Subject对象
Subject subject = SecurityUtils.getSubject();
//2.通过Subject提交用户信息,交给shiro框架进行认证操作
//2.1 对用户进行封装
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
//设置cookie是否启用
token.setRememberMe(isRememberMe);
//2.2对用户信息进行身份认证
subject.login(token);
return new JsonResult("login ok");
}
配置类中配置Cookie生命周期
/**
* 构建记住我管理器对象
* @return
*/
@Bean
public RememberMeManager rememberMeManager(){
CookieRememberMeManager cManager = new CookieRememberMeManager();
SimpleCookie cookie = new SimpleCookie("rememberMe");
cookie.setMaxAge(10*60);
cManager.setCookie(cookie);
return cManager;
}
注入到SecurityManager
sManager.setRememberMeManager(rememberMeManager);
过滤工厂中
map.put("/**","user");