0
点赞
收藏
分享

微信扫一扫

四 . Spring Security session管理

一. 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>
举报

相关推荐

0 条评论