現(xiàn)在分布式系統(tǒng)活合,都是采用redis做共享會(huì)話。
現(xiàn)在系統(tǒng)使用的是spring security,用戶登陸后物赶,如何通過sessionId保證已經(jīng)登陸呢
解決辦法如下:
@Configuration
//maxInactiveIntervalInSeconds session超時(shí)時(shí)間,單位秒
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 600)
public class RedisSessionConfig {
//這里有個(gè)小坑白指,如果服務(wù)器用的是云服務(wù)器,不加這個(gè)會(huì)報(bào)錯(cuò)
@Bean
public static ConfigureRedisAction configureRedisAction() {
return ConfigureRedisAction.NO_OP;
}
//session策略酵紫,這里配置的是Header方式(有提供Header告嘲,Cookie等方式)
@Bean
public HttpSessionStrategy httpSessionStrategy() {
return new HeaderHttpSessionStrategy();
}
}
從代碼中,關(guān)鍵是HeaderHttpSessionStrategy憨闰,該代碼定義了如果sessionId存在header里状蜗,且key為x-auth-token,就能保證調(diào)用的正確性