現在分布式系統,都是采用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,就能保證調用的正确性