如何使用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>

并在web.xml中

<session-config>

<session-timeout>1</session-timeout>

</session-config>

1分钟后,我看到该会话已被破坏。1分钟后终止会话。但是页面没有重定向到/ login?logout

回答:

如何使用安全配置。我希望下面的配置:将工作。

 --namespace-> xmlns:security="http://www.springframework.org/schema/security"

<security:logout invalidate-session="true"

success-handler-ref="Logout"

logout-url="/logout.html" />

</security:http>

 <session-config>

<session-timeout>

30

</session-timeout>

</session-config>

而他们,您需要编写自己的,因为success-handler-ref =“ 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);

}

}

以上是 如何使用Spring Security自动注销 的全部内容, 来源链接: utcz.com/qa/409651.html

回到顶部