Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安全SessionFixationProtectionStrategy干扰会话作用域bean_Session_Spring Mvc_Spring Security_Session Fixation - Fatal编程技术网

安全SessionFixationProtectionStrategy干扰会话作用域bean

安全SessionFixationProtectionStrategy干扰会话作用域bean,session,spring-mvc,spring-security,session-fixation,Session,Spring Mvc,Spring Security,Session Fixation,我使用的是Spring3.1.1.Release和Security3.1.0.Release 我已经将登录/注销添加到我的web应用程序中,但是会话范围的bean并没有像以前那样工作。该bean用于连接到名为CMSConnector的CMS 为了对用户进行身份验证,我实现了AuthenticationProvider,在authenticate()调用中,我获取会话范围的CMSConnector并调用CMSConnector.login()。如果CMS登录失败,则登录失败 问题- 如果登录成功,

我使用的是Spring3.1.1.Release和Security3.1.0.Release

我已经将登录/注销添加到我的web应用程序中,但是会话范围的bean并没有像以前那样工作。该bean用于连接到名为CMSConnector的CMS

为了对用户进行身份验证,我实现了AuthenticationProvider,在authenticate()调用中,我获取会话范围的CMSConnector并调用CMSConnector.login()。如果CMS登录失败,则登录失败

问题-

如果登录成功,则在成功登录后立即调用@predestroy logout()。然后我发现是SessionFixationProtectionStrategy调用了“使上一个会话无效”并为其分配一个新会话

session.invalidate();
session = request.getSession(true); // we now have a new session
invalidate()正在会话作用域bean上调用@predestroy方法

因此,我暂时删除了@predestroy注释,使连接未关闭。(非常糟糕的做法。)

解决问题的变通方法是什么

我试图创建一个@PostConstruct并将登录过程放在那里,但是在调用request.getSession(true)时,@PostConstruct没有被调用

谢谢


Jason

我认为这不是会话固定保护策略,而是ConcurrentSessionControl策略


为此代码设置max sessions=“-1”

我没有解决我原来的问题,但我在session expire对象中实现了一个变通方法-expire session,而不是附加@predestroy

谢谢Ravi,在调试会话中,SessionFixationProtectionStrategy进程调用了我的preDestroy。