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