SpringSecurity整合SpringSession-Redis 限制用户登录,SpringSecurity单用户登录
1.先去查看SpringSecurity官网文档 SpringSecurity 官网提供操作,此操作只能解决单机非redis的
2.再去查看springsSession官网的文档。springsession官网 提供文档
SessionRepository实现也可以选择实现FindByIndexNameSessionRepository
FindByIndexNameSessionRepository提供一种方法,用于查找具有给定索引名称和索引值的所有会话
FindByIndexNameSessionRepository实现时,可以使用方便的方法查找特定用户的所有会话
具体代码实现
@Configuration @EnableWebSecurity public class WebSecurityConfig<S extends Session> extends WebSecurityConfigurerAdapter { @Autowired private FindByIndexNameSessionRepository<S> sessionRepository; @Override protected void configure(HttpSecurity http) throws Exception { //单用户登录 http.sessionManagement().maximumSessions(1).expiredUrl("/login").sessionRegistry(sessionRegistry()); } @Bean SpringSessionBackedSessionRegistry<S> sessionRegistry() { return new SpringSessionBackedSessionRegistry<S>(sessionRepository); } }
spring session管理器 只允许1个用户登录该账号,如果失败跳转登录地址
说了这么多 其实也就这一句
http.sessionManagement().maximumSessions(1).expiredUrl("/login").sessionRegistry(sessionRegistry());