Skip to main content
 首页 » 编程设计

Spring 安全3.2 : Can't logout

2024年11月24日5小虾米

我是 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