天天看點

spring security将sessionId放在header裡,解決共享會話的問題

現在分布式系統,都是采用redis做共享會話。

現在系統使用的是spring security,使用者登陸後,如何通過sessionId保證已經登陸呢

解決辦法如下:

@Configuration
//maxInactiveIntervalInSeconds session逾時時間,機關秒
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 600)
public class RedisSessionConfig {
    //這裡有個小坑,如果伺服器用的是雲伺服器,不加這個會報錯
    @Bean
    public static ConfigureRedisAction configureRedisAction() {
        return ConfigureRedisAction.NO_OP;
    }
    //session政策,這裡配置的是Header方式(有提供Header,Cookie等方式)
    @Bean
    public HttpSessionStrategy httpSessionStrategy() {
        return new HeaderHttpSessionStrategy();
    }
}
           

從代碼中,關鍵是HeaderHttpSessionStrategy,該代碼定義了如果sessionId存在header裡,且key為x-auth-token,就能保證調用的正确性