Springboot集成Shiro Session过期时间如何配置

第一种方式:使用shiro配置: 在shiro config中配置:

@Bean(name = "sessionManager")

public DefaultWebSessionManager sessionManager() {

DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();

// 设置session过期时间3600s

sessionManager.setGlobalSessionTimeout(3600000L);

return sessionManager;

}

@Bean

public SecurityManager securityManager() {

DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();

securityManager.setSessionManager(sessionManager());

return securityManager;

}

第二种方式:使用内置tomcat容器配置: 在application.properties配置:

#session过期时间(单位秒) 默认1800s(30min)

#设置小于60秒,则会默认取1分钟

#实际过期时间为秒数对分钟取整,比如设置2000,则 2000s/60=33min,33min*60=1980s,实际过期时间为1980s

server.session.timeout=3600

测试session过期时间:

//获取当前的用户

Subject subject = SecurityUtils.getSubject();

//封装用户的登录数据

UsernamePasswordToken token = new UsernamePasswordToken(username, password);

UserEntity user = userService.queryUserByName(token.getUsername());

try {

subject.login(token); //执行登录的方法,如果没有异常就说明ok

Subject currentSubject = SecurityUtils.getSubject();

Session session = currentSubject.getSession();

session.setAttribute("loginUser", user);

log.info("Shiro-Session过期时间:" + session.getTimeout());

return Response.of(true, HttpStatus.OK.value(), "登录成功!");

} catch (UnknownAccountException e) { //用户名不存在

return Response.of(false, HttpStatus.NON_AUTHORITATIVE_INFORMATION.value(), "该用户不存在!");

} catch (IncorrectCredentialsException e) { //密码不存在

return Response.of(false, HttpStatus.NON_AUTHORITATIVE_INFORMATION.value(), "密码错误!");

}

友情链接:

Copyright © 2022 神龙网游活动站 - 新版本&限时福利聚合 All Rights Reserved.