Spring Security 4 退出后再登录,页面停留在登录页,Url却多了一个Logout参数

Spring Security使用自定义的用户登录页面导致退出功能异常的原因分析与解决方案 Spring Security使用自定义的用户登录页面导致退出功能异常的原因分析与解决方案1 问题描述2 问题重现2.1 使用默认的用户登录页面,退出成功2.2 使用自定义的用户登录页面,退出失败3 原因分析3.1 对比两次请求3.2 分析执行原理3.3 分析结果总结4 解决方法4.1 使用POST请求/logout4.2 使用自定义的RequestMatcher4.3 改变默认的RequestM... 阅读详情

spring security 4 的logout问题
今天在集成spring-boot 和 spring-security的时候,出现了如下的怪象:
配置好了基本的登录和身份验证(自定义了一个简单的UserDetailsService),springboot的配置如下:

       http.authorizeRequests().anyRequest().authenticated()
                    .and()
                    .formLogin()
                    .loginPage("/signin").permitAll()
                    .failureUrl("/signin?error=1").permitAll()
                    .defaultSuccessUrl("/index")
                    .loginProcessingUrl("/login")
                    .and()
                    .logout().logoutRequestMatcher(AntPathRequestMatcher("/logout", "POST"))
                    .deleteCookies("JSESSIONID")
                    .invalidateHttpSession(true)
                    .and()
                    .httpBasic();

首次登录没有问题,即:登录后直接进入了Java-Based配置好的index页面。然后点击执行退出,因为启用了CSRF策略,所有登出分为”signout -> logout”两步。登出也OK了。但是,此时再次登录,页面没有进入index,而是停留在登录页面。仔细观察URL,发现浏览器地址栏的URL变成了http://localhost:8080/signin?logout。经过调查,发现是LogoutSuccessHandler出了问题。

默认情况下,spring security 4启用了SimpleUrlLogoutSuccessHandler来处理登出的逻辑

Spring Security 6.x 从入门到实践:Lambda DSL与JWT认证详解 在Java Web开发中,应用安全是构建可靠系统的基石,其核心在于认证与授权两大机制。认证负责验证用户身份,授权则控制资源访问权限。Spring Security作为Spring生态的标准安全框架,通过基于Servlet Filter的链式处理模型实现这些功能,为应用提供全面保护。随着Spring Security 6.x的发布,其引入了基于Lambda的DSL配置方式,显著提升了配置的声明性与可读性,让开发者能更直观地定义安全规则,降低了工程实践中的配置复杂度。结合现代前后端分离架构,采用JWT(JSON 阅读详情

相关推荐

单点登录SSO原理与OIDC/SAML/CAS协议选型实战

单点登录(SSO)是一种实现跨系统统一身份认证的架构模式,其核心在于将认证逻辑从各业务系统解耦,交由可信的身份提供者(IdP)集中处理,并通过标准化协议如OIDC、SAML或CAS安全分发身份凭证。它解决了系统重复登录带来的体验割裂、密码复用风险及运维效率低下等典型问题,在企业内网、SaaS平台和政务系统中具有广泛技术价值。OIDC凭借JWT轻量解析与移动端友好性成为互联网场景首选;SAML以XML断言和强登出广播能力支撑高合规要求环境;CAS则以极简HTTP交互适配中小团队自建需求。本文基于真实落地经验

rongdmmap的博客 462

spring security logout(spring security登出示例)

**spring security logout(spring security登出示例)** 在学习实现spring security登出的时候发现了一篇外文,感觉写的挺好,这里斗胆尝试翻译出来,原文链接:http://websystique.com/spring-security/spring-security-4-logout-example/翻译如下: 这篇文章的是展示如何通过编码的方式

u012156496的博客 1万+

Spring Security5 学习3 - 实现多个登陆页面

Spring Security5(3)实现多个登陆页面一个网页应用中,我们经常需要做到不同的用户有不同的登录页面,以及登陆之后展示不同的页面;不同的用户之间不能访问互相访问网址等等。这里就需要 Spring Security 来实现多个登陆页面。 这里首先使用 idea 创建一个新的 Spring Boot 应用,在功能选择菜单,我们选择: spring security thymeleaf...

qq_41302594的博客 4466

SpringSecurity退出登录报错,logout404,CSRF防护

SpringSecurity退出登录报错,logout404,CSRF防护

质量不太好的博客 2575

Spring Security(十):登出Logout

退出处理逻辑 使当前session失效 清楚与当前用户相关的remember-me记录 清空当前的SecurityContext 重定向到登录页 http.csrf().disable() .antMatchers("/login", "/session/invalid", "/logout", "/signOut").permitAll() .logout() .logoutUrl(...

人不风流枉少年 1万+

java连接打印机访问被拒绝_java – 尝试访问spring security中的登录页面时访问被拒绝的异常...

我正在使用基于java的spring security.我创建了自定义访问决策选民impl.但是当我运行应用程序时,我无法打开登录页面,因为它说,访问被拒绝.这是在我添加自定义访问决策选民impl之后发生的.我想问题是由于自定义AccessDecisionVoter中的以下代码.if(authentication instanceof AnonymousAuthenticationToken)re...

weixin_29326909的博客 406

Shiro Session管理实战:从原理到集群配置与性能优化

在Java Web开发中,Session管理是维护用户状态、保障应用安全的核心机制。其原理基于服务器端存储用户会话信息,通过Session ID实现客户端与服务器状态的关联,在分布式系统中尤为重要。这项技术的价值在于支撑用户身份保持、访问控制及个性化体验,广泛应用于电商、社交、企业后台等需要登录态管理的场景。本文聚焦Apache Shiro框架的Session管理,深入探讨其架构设计,并结合Redis实现集群Session共享,解决分布式环境下的状态同步问题。文中详细解析了Session固定攻击防御、序列化

weixin_30291791的博客 328

Java毕业设计实战:“腾达”游戏分享平台(SpringBoot+Vue+MySQL全栈开发)

是首页游戏列表、搜索页、分类页共用的核心数据获取Hook,其设计目标是解耦UI渲染逻辑与数据获取/分页/过滤/缓存策略。该Hook封装了Axios请求、Loading状态管理、错误重试机制、本地缓存(localStorage)键名生成规则,并暴露loadMore()refresh()等语义化方法。关键在于其参数设计:接受一个对象,其中包含(默认10)、(默认true)、(用于区分不同筛选条件的缓存键),而非硬编码常量。即可隔离缓存域。id: string热度: number。

weixin_28888459的博客 345

spring security起步四:退出登录配置以及logout属性详解

用户退出登录实质是使当前登录用户的session失效的操作。一般来说,用户退出后,将会被重定向到站点的非安全保护页,比如登录页面.用户退出功能实现增加hader.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="htt

小鱼儿的专栏 5万+

spring boot security 配置登录页

我们可以配置多个HttpSecurityConfig,具体源码如下: @EnableWebSecurity public class MultiHttpSecurityConfig { @Configuration @Order(1) public static class App1ConfigurationAdapter extends WebSecurityConfigurerAdapter { protected void configure(HttpSecur

农村打工仔的博客 1169

SpringSecurity的HTTP权限控制

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_37338761/article/details/102728951 Spring Security的HTTP权限控制 简介 一个能够为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架(简单说是对访问权限进行控...

TiAmoSkr的博客 723

springSecurity 登出logout配置

Logout)指的是用户使其安全session失效的一种操作。一般来说,用户在退出后,将会被重定向到站点的非安全保护的界面。 配置如下 <http use-expressions="true" access-denied-page="/login" > </http>中加入如下配置: 1 <logo...

weixin_33943347的博客 1487

Spring Security 3》 【第三章】增强用户体验(2)

Spring Security 3》 【第三章】增强用户体验(2) 摘要: 术语退出Logout)指的是用户使其安全session失效的一种操作。一般来说,用户在退出后,将会被重定向到站点的非安全保护的界面。让我们在站点的页头部分添加一个“Log Out”的链接,并再次访问站点以了解其如何实现功能的。 理解退出功能 术语退出Logout

小糊涂蛋大糊涂神的专栏 1119

Spring Security 使用logoutUrllogoutSuccessUrl跳转显示404异常错误

解决方案 因为 spring security 在开启 csrf 防护的情况下,/logout 必须是以 POST 方法提交才行,<a> 标签请求是 GET 方法,所以报 404 1.很有可能开启了CSRF防护,可以关闭【不建议】 http.csrf().disable(); 2.以 form 表单的形式请求 /logout 接口 <form th:action="@{/logout}" method="post"> <input type="hidden" name=

Geek_Dream 4943

Spring Security教程(14)---- Logout和SessionManager

Logout的配置很简单,只需要在http中加入下面的配置就可以了 [html] view plaincopy sec:logout invalidate-session="true" logout-url="/logout"       logout-success-url="/login.jsp" />   invalidate-se

z69183787的专栏 2931

Spring Security集成与使用

说明 security会对服务端的接口添加权限过滤,不具备权限的请求将被拒绝。 引入security 要引入security,只需添加依赖即可: 在pom.xml中引入security: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency&g

超频化石鱼的博客 794

10. Spring Security 退出登录logout

要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain。当我们指定了http元素的auto-config属性为true时logout定义是会自动配置的,此时我们默认退出登录URL为“/j_spring_security_logout”,可以通过logout元素的l

一个人的人生 3192

Spring Security 修改默认的登陆页面,会同时修改默认的退出页面

在添加了loginPage之后,会同时修改login和logout,不然logout会失败。 1. 登陆页面配置 .and() .formLogin() .loginPage("/login") .defaultSuccessUrl("/bookList/") .and() .rememberMe()

alterhz的博客 1211
上一篇: 绿色版MySQL-5.7.12安装说明
Andark
博客等级 码龄19年 4粉丝 7原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值