当前位置:   article > 正文

基于webflux的security的Session过期时间设置_serversecuritycontextrepository

serversecuritycontextrepository

基于webflux的security的Session过期时间设置

之前的session.timeout的设置方式不会起作用,需要我们去继承WebSessionServerSecurityContextRepository类再做配置,配置相关代码如下:

@Configuration
public class SessionConfig extends WebSessionServerSecurityContextRepository {
// 所有security生成的session的name都是SPRING_SECURITY_CONTEXT
    public static final String DEFAULT_SPRING_SECURITY_CONTEXT_ATTR_NAME = "SPRING_SECURITY_CONTEXT";

    private String springSecurityContextAttrName = DEFAULT_SPRING_SECURITY_CONTEXT_ATTR_NAME;
	
	// 过期时间写在了配置文件中
    @Value("${sessionExpireTime}")
    private Long sessionExpireTime;

    @Override
    public void setSpringSecurityContextAttrName(String springSecurityContextAttrName) {
        super.setSpringSecurityContextAttrName(springSecurityContextAttrName);
    }

    @Override
    public Mono<Void> save(ServerWebExchange exchange, SecurityContext context) {
        return exchange.getSession()
                .doOnNext(session -> {
                    if (context == null) {
                        session.getAttributes().remove(this.springSecurityContextAttrName);
                    } else {
                        session.getAttributes().put(this.springSecurityContextAttrName, context);
                        // 在这里设置过期时间 单位使用Duration类中的定义  有秒、分、天等
                        session.setMaxIdleTime(Duration.ofSeconds(sessionExpireTime));
                    }
                })
                .flatMap(session -> session.changeSessionId());
    }
	// 通过该方法可以获取到所有的session
    @Override
    public Mono<SecurityContext> load(ServerWebExchange exchange) {
        return super.load(exchange);
    }
}```

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/68876
推荐阅读
相关标签
  

闽ICP备14008679号