Shiro-RememberMe

 

 

概述

  Shiro-RememberMe_第1张图片

 

 认证和记住我

  Shiro-RememberMe_第2张图片

 

建议

  Shiro-RememberMe_第3张图片

 

 身份验证相关

  Shiro-RememberMe_第4张图片

 

 

 实现

 如果要自己做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的一个属性,

 Shiro-RememberMe_第5张图片

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

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
        <property name="cacheManager" ref="cacheManager"/>
        
        
        
        
        
        <property name="authenticator" ref="authenticator">property>
        
        <property name="realms">
            <list>
                <ref bean="jdbcRealm"/>
                <ref bean="secondRealm"/>
            list>
        property>
        
        <property name="rememberMeManager.cookie.maxAge" value="10">property>
    bean>

 

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

Shiro-RememberMe_第6张图片

 

当然 rememeberMeManager也可以单独配置

Shiro-RememberMe_第7张图片

 

转载于:https://www.cnblogs.com/wq3435/p/6275779.html

你可能感兴趣的:(Shiro-RememberMe)