一. session管理
1.1 session并发控制
安全配置
.and() //表示进行其他的配置
.sessionManagement() // session的处理
.maximumSessions(1) // 表示一个用户只能有一个会话
.expiredSessionStrategy(mutipleSessionHandler) //表示如果有多个用户登录,就强制让其他的用户下线
.and()
session失效处理逻辑
/**
* 同时多设备登录处理
*/
public class MultipleSessionHandler implements SessionInformationExpiredStrategy {
@Override
public void onExpiredSessionDetected(SessionInformationExpiredEvent event)
throws IOException, ServletException {
HttpServletResponse response = event.getResponse();
response.setContentType("text/plain;charset=utf-8");
response.getWriter().write("其他设备登录");
}
}
1.2 session集群管理
依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-core</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.7.0</version>
</dependency>
applicatoin.yml配置
spring:
redis:
port: 6379
host: localhost
password:
lettuce:
pool:
min-idle: 2
max-active: 8
session:
store-type: redis
二. 退出登录
.logout() //
.logoutSuccessUrl("/login.html") //退出后跳转的页面
.and()
退出登录网页链接
<a href="/logout">退出</a>