Shiro-RememberMe


 

 

概述

  

 

 認證和記住我

  

 

建議

  

 

 身份驗證相關

  

 

 

 實現

 如果要自己做RememeberMe,需要在登錄之前創建Token:UsernamePasswordToken(用戶名,密碼,是否記住我),且調用

UsernamePasswordToken 的 : token.setRememeberMe(true);

 

@RequestMapping("/login")
    public String login(@RequestParam("userName") String userName,
            @RequestParam("password") String password) {

        Subject currentUser = SecurityUtils.getSubject();

        if (!currentUser.isAuthenticated()) {
            UsernamePasswordToken token = new UsernamePasswordToken(userName, password); token.setRememberMe(true); 
            try {
                currentUser.login(token);
            } catch (AuthenticationException e) {
                System.out.println("登錄失敗:" + e.getMessage());
            }
        }
        return "redirect:/list.jsp";

    }

 

 

 RememeberMe 實際上是由 rememeberMeManager進行配置的 rememeberMeManager是SecurityManager的一個屬性,

 

所以可以在 applicationContext的 SecurityManager 中配置 rememeberMeManager

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="cacheManager" ref="cacheManager"/>
        <!-- Single realm app.  If you have multiple realms, use the 'realms' property instead. -->
        <!-- 配置session的管理方式 -->
        <!-- <property name="sessionMode" value="native"/> -->
        <!-- <property name="realm" ref="jdbcRealm"/> -->
        <!-- 配置多個Realm -->
        <property name="authenticator" ref="authenticator"></property>
        
        <property name="realms">
            <list>
                <ref bean="jdbcRealm"/>
                <ref bean="secondRealm"/>
            </list>
        </property>
        <!-- 將cookie的作用時間配置為10s -->
        <property name="rememberMeManager.cookie.maxAge" value="10"></property>
    </bean>

 

可以看到 cookie的maxAge已被修改為 10s

 

當然 rememeberMeManager也可以單獨配置

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM