Spring Boot Shiro Remember Me

发布时间:2026/10/29 20:47:40
Spring Boot Shiro Remember Me 一、前言接着《Spring-Boot-shiro用户认证》当用户成功登录后关闭浏览器然后再打开浏览器访问http://localhost:8080/web/index页面会跳转到登录页之前的登录因为浏览器的关闭已经失效。Shiro为我们提供了Remember Me的功能用户的登录状态不会因为浏览器的关闭而失效直到Cookie过期。二、更改 ShiroConfig继续编辑ShiroConfig加入/** * cookie对象 * return */publicSimpleCookierememberMeCookie(){// 设置cookie名称对应login.html页面的input typecheckbox namerememberMe/SimpleCookiecookienewSimpleCookie(rememberMe);// 设置cookie的过期时间单位为秒这里为一天cookie.setMaxAge(86400);returncookie;}/** * cookie管理对象 * return */publicCookieRememberMeManagerrememberMeManager(){CookieRememberMeManagercookieRememberMeManagernewCookieRememberMeManager();cookieRememberMeManager.setCookie(rememberMeCookie());// rememberMe cookie加密的密钥cookieRememberMeManager.setCipherKey(Base64.decode(4AvVhmFLUs0KTA3Kprsdag));returncookieRememberMeManager;}接下来将cookie管理对象设置到SecurityManager中BeanpublicSecurityManagersecurityManager(){DefaultWebSecurityManagersecurityManagernewDefaultWebSecurityManager();securityManager.setRealm(shiroRealm());securityManager.setRememberMeManager(rememberMeManager());returnsecurityManager;}最后修改权限配置将ShiroFilterFactoryBean的filterChainDefinitionMap.put(“/**”, “authc”);更改为filterChainDefinitionMap.put(“/**”, “user”);user指的是用户认证通过或者配置了Remember Me记住用户登录状态后可访问。三、更改 login.html在login.html中加入Remember Me checkbox!DOCTYPEhtmlhtmlxmlns:thhttp://www.thymeleaf.orgheadmetacharsetUTF-8title登录/titlelinkrelstylesheetth:href{/css/login.css}typetext/cssscriptth:src{/js/jquery-1.11.1.min.js}/script/headbodydivclasslogin-pagedivclassforminputtypetextplaceholder用户名nameusernamerequiredrequired/inputtypepasswordplaceholder密码namepasswordrequiredrequired/pinputtypecheckboxnamerememberMe/记住我/pbuttononclicklogin()登录/button/div/div/bodyscriptth:inlinejavascriptvarctx[[{/}]];functionlogin(){varusername$(input[nameusername]).val();varpassword$(input[namepassword]).val();varrememberMe$(input[namerememberMe]).is(:checked);$.ajax({type:post,url:ctxlogin,data:{username:username,password:password,rememberMe:rememberMe},dataType:json,success:function(r){if(r.code0){location.hrefctxindex;}else{alert(r.msg);}}});}/script/html四、更改 LoginController更改LoginController的login()方法PostMapping(/login)ResponseBodypublicResponseBologin(Stringusername,Stringpassword,StringrememberMe){passwordMD5Utils.encrypt(username,password);UsernamePasswordTokentokennewUsernamePasswordToken(username,password,rememberMe);SubjectsubjectSecurityUtils.getSubject();try{subject.login(token);returnResponseBo.ok();}catch(UnknownAccountExceptione){returnResponseBo.error(e.getMessage());}catch(IncorrectCredentialsExceptione){returnResponseBo.error(e.getMessage());}catch(LockedAccountExceptione){returnResponseBo.error(e.getMessage());}catch(AuthenticationExceptione){returnResponseBo.error(认证失败);}}当rememberMe参数为true的时候Shiro就会帮我们记住用户的登录状态。启动项目即可看到效果。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询