Shiro中记住我功能

本文介绍了一个网站登录功能中记住我选项的具体实现方法,包括前端JavaScript代码、后端Controller层处理逻辑及Shiro框架的集成,展示了如何通过Cookie记住用户登录状态,实现关闭页面后直接访问登录后的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

登录网站在页面选择"记住我"然后登录成功,此时关闭页面可以直接通过地址无需登录直接访问登录后的内容
页面需要的代码

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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值