请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

配置.maximumSessions(1)后,并发控制仍不起作用

配置.maximumSessions(1)后,并发控制仍不起作用,用两个浏览器测试,都可以正常访问接口,不知道什么原因

正在回答 回答被采纳积分+3

3回答

春生啊 2018-09-04 16:03:33

同问啊

1 回复 有任何疑惑可以回复我~
melodykke 2018-11-21 14:40:05

不知道提问者这个问题解决没有,我同样遇到这个问题。下面说下我的解决办法,希望能帮助有同样问题的童鞋。

跟着代码一路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就能正常起作用了。


0 回复 有任何疑惑可以回复我~
JoJo 2018-05-03 16:51:24

到SessionManagementFilter和ConcurrentSessionControlAuthenticationStrategy里跟一下代码看看。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信