配置.maximumSessions(1)后,并发控制仍不起作用
来源:5-10 集群Session管理

sgpian
2018-04-29
配置.maximumSessions(1)后,并发控制仍不起作用,用两个浏览器测试,都可以正常访问接口,不知道什么原因
3回答
-
春生啊
2018-09-04
同问啊
10 -
melodykke
2018-11-21
不知道提问者这个问题解决没有,我同样遇到这个问题。下面说下我的解决办法,希望能帮助有同样问题的童鞋。
跟着代码一路debug,发现程序调用ConcurrentSessionControlAuthenticationStrategy里面onAuthentication方法时,方法内部的final List<SessionInformation> sessions = sessionRegistry.getAllSessions(
authentication.getPrincipal(), false); sessions空。 跟进去看,SessionRegistryImpl的getAllSessions中直接是用认证过后的principal作为map key去查有无对应的session的。问题就出在这个地方,把你的系统中自定义的principal的toString从写一下,换成如public String toString() {
return this.username;
} 这样principal作为key在map里就能找到有效期内重名的session记录。然后你定义的那个什么maximumSessions就能正常起作用了。012020-02-19 -
JoJo
2018-05-03
到SessionManagementFilter和ConcurrentSessionControlAuthenticationStrategy里跟一下代码看看。
00
Spring Security技术栈开发企业级认证与授权
2662 学习 · 1561 问题
相似问题