gre*_*rep 11 java spring spring-mvc spring-security
我有一个Spring Web应用程序,我使用Spring安全性进行了用户身份验证.
一切都很好.登录和注销工作完美!
现在,我想实现以便自动注销.例如,如果用户打开窗口大约30分钟并且什么也不做(例如,会话已过期)系统应该自动注销.我该如何实现呢?
它可能由客户端实现(我每1分钟发送一次请求并检查会话是否结束).但我不能自动从Spring那里做到这一点吗?
我有这个配置:
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin**" />
<access-denied-handler error-page="/403" />
<form-login login-page="/login"
default-target-url="/admin"
authentication-failure-url="/login?error"
username-parameter="NAME"
password-parameter="PASSWORD" />
<logout invalidate-session="true"
logout-success-url="/login?logout"/>
</http>
Run Code Online (Sandbox Code Playgroud)
并在web.xml中
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)
1分钟后,我看到会话被破坏了.1分钟后杀死会话.但是页面没有重定向到/ login?logout
如何使用安全配置。我希望下面的配置:将工作。
applicationContext.xml
--namespace-> xmlns:security="http://www.springframework.org/schema/security"
<security:logout invalidate-session="true"
success-handler-ref="Logout"
logout-url="/logout.html" />
</security:http>
Run Code Online (Sandbox Code Playgroud)
web.xml
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
Run Code Online (Sandbox Code Playgroud)
而他们,您需要编写自己的,因为success-handler-ref =“ Logout”是用于注销的自定义处理程序:
Logout
@Component
public class Logout extends SimpleUrlLogoutSuccessHandler {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
if (authentication != null) {
// do something
}
setDefaultTargetUrl("/login");
super.onLogoutSuccess(request, response, authentication);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19324 次 |
| 最近记录: |