(一)相关配置
<!--配置securityManager,注意在Spring中使用的是DefaultWebSecurityManager,在非web环境下,使用DefaultSecurityManager-->
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!--配置数据源-->
<property name="realm" ref="realm"/>
<!--配置Shiro的SessionManager对象-->
<property name="sessionManager" ref="sessionManager"/>
<!--配置自定义的Redis缓存管理对象-->
<property name="cacheManager" ref="redisCacheManager"/>
<!--配置记住我管理对象-->
<property name="rememberMeManager" ref="rememberMeManager"/>
</bean>
<!--记住我管理器-->
<bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager">
<property name="cookie" ref="cookie"/>
</bean>
<bean id="cookie" class="org.apache.shiro.web.servlet.SimpleCookie">
<!--前端传过来记住我的属性名-->
<constructor-arg value="rememberMe"/>
<!--登录过期时间-->
<property name="maxAge" value="2000000"/>
</bean>
(二)用户对象添加rememberMe属性,接收前端参数
private boolean rememberMe;
public boolean isRememberMe() {
return rememberMe;
}
public void setRememberMe(boolean rememberMe) {
this.rememberMe = rememberMe;
}
(三)验证登录处,添加该属性
@PostMapping(value = "/sublogin", produces = "application/json;charset=utf-8")
@ResponseBody
public String login(User user){
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());
try {
//接收前端的记住我
token.setRememberMe(user.isRememberMe());
subject.login(token);
} catch (AuthenticationException e) {
return e.getMessage();
}
return "登陆成功";
}
(四)前端增加个单选框,name
属性设置为rememberMe