在登陆用户时,点击记住我,从而下次登陆时能够直接登陆
一、在SpringShiroConfig配置rememberMe对象前端
/** * 配置记住个人管理器对象 */ @Bean public RememberMeManager rememberMeManager() { CookieRememberMeManager cManager = new CookieRememberMeManager(); // 用户信息保存在cookie中 SimpleCookie cookie = new SimpleCookie("rememberMe"); // 保存时间 cookie.setMaxAge(7 * 24 * 60 * 60); cManager.setCookie(cookie); return cManager; }
二、将rememberMe注入securityManagerapache
@Bean public org.apache.shiro.mgt.SecurityManager securityManager(Realm realm, CacheManager cacheManager, RememberMeManager rememberMeManager) { DefaultWebSecurityManager sManager = new DefaultWebSecurityManager(); // 写完realm后把它注入给securityManager sManager.setRealm(realm); sManager.setCacheManager(cacheManager); sManager.setRememberMeManager(rememberMeManager); return sManager; }
三、Controller层添加rememberMe判断cookie
@RequestMapping("doLogin") public JsonResult doLogin(boolean isRemember, String username, String password) { // 获取subject对象,负责提交客户端的帐号信息 Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(username, password); // 记住我 if (isRemember) { token.setRememberMe(true); } // 给securityManager提交用户信息 subject.login(token); return new JsonResult("login ok"); }
四、在ShiroFilterFactoryBean中添加rememberMe登陆权限session
LinkedHashMap<String,String> map= new LinkedHashMap<>(); //静态资源容许匿名访问:"anon" map.put("/bower_components/**","anon"); map.put("/build/**","anon"); map.put("/dist/**","anon"); map.put("/plugins/**","anon"); map.put("/user/doLogin","anon"); map.put("/doLogout", "logout");//自动查LoginUrl //除了匿名访问的资源,其它都要认证("authc")后访问 map.put("/**","user"); sfBean.setFilterChainDefinitionMap(map); return sfBean; }
一、配置SpringShiroConfigapp
@Bean public SessionManager sessionManager() { DefaultWebSessionManager sManager= new DefaultWebSessionManager(); // 设置保存时间;默认是30分钟 sManager.setGlobalSessionTimeout(60*60*1000); return sManager; }
二、注入到securityManager框架
@Bean public org.apache.shiro.mgt.SecurityManager securityManager(Realm realm, CacheManager cacheManager, RememberMeManager rememberMeManager, SessionManager sessionManager) { DefaultWebSecurityManager sManager = new DefaultWebSecurityManager(); // 写完realm后把它注入给securityManager sManager.setRealm(realm); sManager.setCacheManager(cacheManager); sManager.setRememberMeManager(rememberMeManager); sManager.setSessionManager(sessionManager); return sManager; }
@RequestMapping("doIndexUI") public String doIndexUI(Model model) { // 从shiro框架中的session对象中取用户 SysUser user = (SysUser)SecurityUtils.getSubject().getPrincipal(); model.addAttribute("user",user); model.addAttribute("username",user.getUsername()); return "starter"; }
登陆 admin用户ui