Spring 安全3.2 : Can't logout

标签 spring security logout

我是 Spring Security 的 Java 配置新手。我想要实现的目标如下: 我的应用程序使用jsp;我有一个名为/login.jsp 的自定义登录表单。

我将 httpsecurity 定义为:

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticate d().and().formLogin()
.loginPage("/login.jsp").permitAll().and().logout().permitAll() ;
}

登录工作正常,网址被正确拦截,登录表单出现,成功登录后,我访问应用程序页面。

问题出在注销过程上;我在我的 jsp 中包含了一个用于注销的链接:

<li><a href="${pageContext.request.contextPath}/logout"
title="Logout"><span class="glyphicon glyphicon-log-out"></span></a></li>

但是当我点击链接时,我收到 404 错误,因为没有这样的页面/logout

我尝试将链接指定为:

<li><a href="${pageContext.request.contextPath}/login.jsp?logout=0"
title="Logout"><span class="glyphicon glyphicon-log-out"></span></a></li>

虽然它显示登录页面时显示“您已注销”,但我仍然可以访问应用程序页面;

所以我想知道我应该在注销链接中设置什么值以及在HttpSecurity配置中应该设置什么相应的设置,知道我想要实现的是当用户单击注销链接时,他就被注销了并重定向到登录页面,并显示消息“您已注销”。

致以诚挚的问候

让-诺埃尔

最佳答案

您需要在配置中指定注销网址,例如

.logoutUrl("/logout")

如果不设置此 Spring Security 将默认为 /j_spring_security_logout

关于 Spring 安全3.2 : Can't logout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21115608/

相关文章:

java - REST API 架构

java - io.grpc.StatusRuntimeException : UNIMPLEMENTED: Method not found

java - 如何删除 cookie

PHP 登录/注销如果 session 超时 = true 做点什么

java - 这个错误是怎么回事

java - 缓存信息以获得快速 http 响应的最佳选择

security - 一个 Guice 就绪的安全框架?

java - 签名的 JNLP 会产生更多的安全对话框

asp.net - 删除未使用的 HTTP 处理程序以获得更好的性能和安全性

c# - 无法在 ASP.NET C# 中删除 cookie