shiro教程:记住我功能
生活随笔
收集整理的這篇文章主要介紹了
shiro教程:记住我功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
雖然不太推薦使用記住我功能, 但是,還是講一下這個功能,實際上大多數使用session來管理。
1、applicationContext-shiro.xml文件
<!-- 安全管理器 --><bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"><!-- 配置記住我 --><property name="rememberMeManager" ref="rememberMeManager"></property></bean><!-- 記住密碼Cookie --><bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> <constructor-arg value="rememberMe"/><!-- 7天,采用spring el表達式來計算,方便修改 --><property name="maxAge" value="#{7 * 24 * 60 * 60}"/><property name="domain" value=".yzixi.com"/> </bean><!-- rememberMe管理器,cipherKey生成見{@code Base64Test.java} --><bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager"><property name="cookie" ref="rememberMeCookie"/> </bean>2、登錄頁面
<div class="form-actions"><div class="pull-left"><label class="rememberme mt-checkbox mt-checkbox-outline"><input type="checkbox" name="isRememberMe" value="1" /> 記住我<span></span></label></div></div>3、controller
@RequestMapping(value = "/login", method = RequestMethod.POST)@ResponseBodypublic LeeJSONResult doPostlogin(String username, String password, String captcha, @RequestParam(value="isRememberMe", defaultValue="0") Integer isRememberMe, HttpServletRequest request, HttpServletResponse response) {if (StringUtils.isBlank(username)) {return LeeJSONResult.errorMsg("用戶名不能為空");}if (StringUtils.isBlank(password)) {return LeeJSONResult.errorMsg("密碼不能為空");}if (!itzixiCaptcha.validate(request, response, captcha)) {return LeeJSONResult.errorMsg("驗證碼錯誤, 請重新輸入...");}Subject user = SecurityUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken(username, password.toCharArray());if (isRememberMe == 1) {token.setRememberMe(true);}try {user.login(token);} catch (UnknownAccountException e) {return LeeJSONResult.errorMsg("賬號不存在");} catch (DisabledAccountException e) {return LeeJSONResult.errorMsg("賬號未啟用");} catch (IncorrectCredentialsException e) {return LeeJSONResult.errorMsg("密碼錯誤");} catch (RuntimeException e) {return LeeJSONResult.errorMsg("未知錯誤,請聯系管理員");}return LeeJSONResult.ok();}主要是下面這個代碼
if (isRememberMe == 1) {token.setRememberMe(true);}當我們選中了記住我后,設置到token中即可。
總結
以上是生活随笔為你收集整理的shiro教程:记住我功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shiro教程:session管理
- 下一篇: 并发基础(七):Thread 类的sle