shiro教程:记住我功能
生活随笔
收集整理的這篇文章主要介紹了
shiro教程:记住我功能
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
雖然不太推薦使用記住我功能, 但是,還是講一下這個(gè)功能,實(shí)際上大多數(shù)使用session來(lái)管理。
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表達(dá)式來(lái)計(jì)算,方便修改 --><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、登錄頁(yè)面
<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("驗(yàn)證碼錯(cuò)誤, 請(qǐng)重新輸入...");}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("賬號(hào)不存在");} catch (DisabledAccountException e) {return LeeJSONResult.errorMsg("賬號(hào)未啟用");} catch (IncorrectCredentialsException e) {return LeeJSONResult.errorMsg("密碼錯(cuò)誤");} catch (RuntimeException e) {return LeeJSONResult.errorMsg("未知錯(cuò)誤,請(qǐng)聯(lián)系管理員");}return LeeJSONResult.ok();}主要是下面這個(gè)代碼
if (isRememberMe == 1) {token.setRememberMe(true);}當(dāng)我們選中了記住我后,設(shè)置到token中即可。
總結(jié)
以上是生活随笔為你收集整理的shiro教程:记住我功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shiro教程:session管理
- 下一篇: 并发基础(七):Thread 类的sle