SpringBoot进阶之整合Shiro鉴权框架(三)前言 大家好,一直以来我都本着用最通俗的话理解核心的知识点,我认为所有的难点都离不开基础知识的铺垫。目前正在出一个SpringBoot长期系列教程,从入门到进阶,篇幅会较多适合人群学完Java基础想通过Java快速构建web应用程序想学习或了解SpringBootSpringBoot进阶学习 大佬可以绕过背景 如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了Springboot基础部分,对基本的使用有了初步的认识,接下来的几期内容将会带大家进阶使用,会先讲解基础中间件的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有收获情景回顾 上期带大家学习了Shiro的基本使用,实现了用户认证功能,本期将带大家学习Shiro中如何存储cookie。同样的,我们集成到Springboot中。功能实现 上期我们遗留了一个小问题,就是用户打开浏览器登录后,再关闭,然后又跳回了登录页。那么如何去解决这个问题其实很简单,让我们的服务器记住它不就好了,想让它失效,就给一个过期时间 在ShiroConfig类中添加如下方法:cookiereturnpublicSimpleCookierememberMeCookie(){设置cookie名称SimpleCookiecookienewSimpleCookie(rememberMe);过期时间,单位秒cookie。setMaxAge(86400);returncookie;}cookie管理对象returnpublicCookieRememberMeManagerrememberMeManager(){CookieRememberMeManagercookieRememberMeManagernewCookieRememberMeManager();cookieRememberMeManager。setCookie(rememberMeCookie());cookie加密的密钥cookieRememberMeManager。setCipherKey(Base64。decode(uwandaljILlia458ad4));returncookieRememberMeManager;} 修改securityManager()方法BeanpublicSecurityManagersecurityManager(){DefaultWebSecurityManagersecurityManagernewDefaultWebSecurityManager();securityManager。setRealm(shiroRealm());添加remberManagersecurityManager。setRememberMeManager(rememberMeManager());returnsecurityManager;} 修改认证路径,user指的是用户认证通过或者配置了RememberMe记住用户登录状态后可访问filterChainDefinitionMap。put(,authc);filterChainDefinitionMap。put(,user); 最后修改我们的控制器,在登录调用的时候传入是否记住:PostMapping(login)ResponseBodypublicStringlogin(Stringusername,Stringpassword){UsernamePasswordTokentokennewUsernamePasswordToken(username,password);获取Subject对象UsernamePasswordTokentokennewUsernamePasswordToken(username,password,true);SubjectsubjectSecurityUtils。getSubject();try{执行登录subject。login(token);returnok;}catch(UnknownAccountExceptione){returne。getMessage();}catch(IncorrectCredentialsExceptione){returnIncorrectCredentialsExceptione。getMessage();}catch(LockedAccountExceptione){returnLockedAccountExceptione。getMessage();}catch(AuthenticationExceptione){return认证失败!;}} 大家试着运行一下结束语 本期内容就到这里结束了,总结一下,本节主要讲了Shiro如何记住用户登录状态以及相关实现,大家可以自己多试试下期预告 下期给大家讲讲Shiro中的权限认证,这块内容也是重点。下期见,关注我,不迷路加群一起交流往期内容我的博客(阅读体验较佳)Springboot入门Springboot基础(一)Springboot基础(二)Springboot基础(三)Springboot基础(四)Springboot基础(五)SpringBoot进阶之缓存中间件RedisSpringBoot进阶之MyBatis分页插件SpringBoot进阶之跨域问题处理(CORS)SpringBoot进阶之日志集成SpringBoot进阶之请求拦截SpringBoot进阶之事务管理及并发问题SpringBoot进阶之整合Shiro鉴权框架(一)SpringBoot进阶之整合Shiro鉴权框架(二)项目源码(持续更新欢迎star)springbootall地址:https:github。comqiuChengleiyspringbootall。git