首页
学习
活动
专区
圈层
工具
发布

解决SpringSecurity手动退出登录后再次登录成功会重定向到登录界面的问题

在使用SpringSecurity时遇到一个奇怪的问题,就是: 当用户主动点击退出按钮后,跳转到登录界面,这个时候进行登录操作。...虽然登录成功,却还是停留在的登录界面(其实已经登录成功,如果手动修改URL地址能够正常进入到需要登录才能进入的界面),并且浏览器地址后面追加了?...delete-cookies 指定退出登录后需要删除的 cookie 名称,多个 cookie 之间以逗号分隔。...logout-success-url 指定成功退出登录后要重定向的 URL。需要注意的是对应的 URL 应当是不需要登录就可以访问的。...由于我在项目中并没有配置退出登录后重定向的URL,但SpringSecurity支持登录成功跳回到退出之前的界面的逻辑,这就导致了再次点击登录后,登录成功重新跳回到了“退出地址界面”,而并没有真正的退出

3.7K10

Spring Security 实战干货:登录成功后返回 JWT Token

本篇我们将一起探讨如何将 JWT 与 Spring Security 结合起来,在认证成功后不再跳转到指定页面而是直接返回 JWT Token 。本文的DEMO 可通过文末的方式获取 2....我们在登录成功后不在跳转到首页,将会直接返回 JWT Token 对(DEMO中为JwtTokenPair),登录失败后返回认证失败相关的信息。 3....实现登录成功/失败返回逻辑 如果你看过 Spring Security 实战干货:玩转自定义登录 将非常容易理解下面的做法。...3.1 AuthenticationSuccessHandler 返回 JWT Token AuthenticationSuccessHandler 用于处理登录成功后的逻辑,我们编写实现并注入 Spring...总结 今天我们将 JWT 和 Spring Security 联系了起来,实现了 登录成功后返回 JWT Token 。

2.8K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    奇怪,Spring Security 登录成功后总是获取不到登录用户信息?

    1.问题复现 如果使用了 Spring Security,当我们登录成功后,可以通过如下方式获取到当前登录用户信息: SecurityContextHolder.getContext().getAuthentication...() 在 Controller 的方法中,加入 Authentication 参数 这两种办法,都可以获取到当前登录用户信息。...小伙伴们都知道,无论是 Spring Security 还是 Shiro,它的一系列功能其实都是由过滤器来完成的,在 Spring Security 中,松哥前面跟大家聊了 UsernamePasswordAuthenticationFilter...搞明白这一点之后,再去解决 Spring Security 登录后无法获取到当前登录用户这个问题,就非常 easy 了。...「如果放在这里,登录请求将不走 SecurityContextPersistenceFilter 过滤器,也就意味着不会将登录用户信息存入 session,进而导致后续请求无法获取到登录用户信息。」

    10.2K61

    Spring Boot Security+JWT前后端分离架构认证登录,居然还有人不会?

    前后端分离认证的思路 前后端分离不同于传统的web服务,无法使用session,因此我们采用JWT这种无状态机制来生成token,大致的思路如下: 客户端调用服务端登录接口,输入用户名、密码登录,登录成功返回两个...登录认证过滤器接口配置 上述定义了一个认证过滤器JwtAuthenticationLoginFilter,这个是用来登录的过滤器,但是并没有注入加入Spring Security的过滤器链中,需要定义配置...将自定义的过滤器配置到spring security的过滤器链中,配置在UsernamePasswordAuthenticationFilter之前 * @param http */...Spring Security的原理就是一系列的过滤器组成,登录流程也是一样,起初在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter...然后认证,一旦认证成功或者失败,则会调用对应的失败、成功处理器进行处理。 总结 Spring Security虽然比较重,但是真的好用,尤其是实现Oauth2.0规范,非常简单方便。

    5.4K33

    解决前后端分离Vue项目部署到服务器后出现的302重定向问题

    问题描述 最近发现自己开发的vue前后端分离项目因为使用了spring security 安全框架,即使在登录认证成功之后再调用一些正常的接口总是会莫名奇妙地出现302重定向的问题,导致接口数据出不来。...通过jwt token认证相当于spring security需要对用户的每次请求都先认证一次,如果用户的认证信息没有保存到SecurityContext类中的authentication中就会在调用非登录接口获取数据时出现这种重定向到登录页面的问题...对于白名单中的请求部署到服务器后是不会有这种302重定向到登录页面的问题。因为这些白名单请求在Spring Security中也进行了放行, 源码如下。...,也可以看到页面的数据成功加载出来了 通过F12调试模式查看网络请求也可以看到没有302重定向的问题了,数据也成功返回了 为了进一步验证调用这个接口时需要重新认证用户的登录信息,我们通过在部署目录执行...由此验证了302重定向的问题是接口之前是spring security框架需要重新认证用户登录信息却没有拿到用户的认证信息导致的,只需要调用这个接口验证jwt token信息,然后解析出用户身份信息后重新保存到

    4.5K20

    任何 Web 项目都离不开的 Spring Security【原理+实战(前后端分离+无状态)】

    输入用户名密码后就可以去执行认证流程了,如下图 认证的流程中,我们还需要留意几个接口: SessionAuthenticationStrategy,认证成功后,会将用户会话存储在HttpSession中...,主要是这两个 项目启动后就会弹出【认证流程】中的登录界面。...认证成功后,默认会由SavedRequestAwareAuthenticationSuccessHandler处理,会重定向到某个URL,需要配置自定义为json响应。...认证成功后,请求未授权的接口,默认会由AccessDeniedHandlerImpl处理,会重定向到某个URL,需要配置自定义为json响应。...认证流程中会有这一步骤 ,具体处理在DaoAuthenticationProvider。 不需要写/login接口,认证成功后我想返回token怎么办?

    1.2K50

    Spring Security技术栈开发企业级认证与授权(十五)解决Spring Social集成QQ登录后的注册问题

    上一篇文章主要完成了Spring Social集成QQ登录主要逻辑,但是最后还是遗留了一个问题,那就是授权登录后跳转到了/signup上,其实这是Spring Social注册逻辑,所以我们就一起用这节内容来共同探讨解决这个问题...Social,Spring Social拿到数据以后,就会将这个唯一标识和用户在QQ上的信息一同存储到UserConnection表中,那么下次授权登录的时候,再次走到认证代码中的时候,如下图所示:...,查找依据就是providerId和providerUserId(实际就是openId,QQ用户对于每个授权应用都会生成的一个唯一的ID),那么注册后,或者绑定后,就会查询到数据,这时候就不会返回null...了,也就不会再抛出重定向的异常了,那么就可以正确地进入到系统中了。...,如果用户第一次登录,那么Spring Social在UserConnection表中就查不到用户的数据,那么用户就会跳转到主页页面要求用户注册或者绑定,那么我们一起来看看具体的认证代码: ?

    1K10

    单点登录与授权登录业务指南

    一旦授权,你就可以使用社交媒体账号在新网站上登录,而无需创建新的账户。这种方式简化了登录流程,同时保护了你的密码安全,因为你的社交媒体登录信息不会被第三方网站获取。...SSO原理 单点登录的原理主要是由下面部分构成: 统一登录入口: 所有系统共用一个登录页面,用户只在这里登录一次。 授权令牌创建: 登录成功后,认证中心会创建一个“令牌”(一种特殊的标记)。...邮件系统将他重定向到公司的SSO认证中心,Tom在那里登录。登录成功后,他被带回邮件系统,并且可以访问他的邮件。之后,Tom决定查看公司的内部论坛(系统2)。...接收和存储令牌:用户在sso-server成功登录后,sso-client接收并存储从sso-server发来的授权令牌。...访问客户端:在浏览器中访问客户端应用。由于客户端配置了OAuth2登录,您将被重定向到sso-server进行认证。 登录并重定向:在 sso-server 登录后,您将被重定向回客户端应用。

    2.6K21

    打造REST风格的Spring Security配置

    3.2.认证入口点 在一个标准的web应用程序中,当客户端不经过身份认证就试图访问一个安全的资源时,身份认证过程可能会被自动触发——这通常是通过重定向到登录页面来实现的,这样用户就可以输入认证信息了。...3.4.认证通过应该返回200而不是301 默认情况下,一个请求在身份认证成功后,组件将使用 301 MOVED PERMANENTLY HTTP状态码进行响应;这在实际的表单登录上下文中是有意义的...,因为它需要在登录后重定向。...然而,对于一个基于REST的web服务,成功认证所需的响应应该是200 OK。 这是通过在表单登录的过滤器中注入一个自定义认证成功处理器来完成的,以替换默认的配置。...唯一的区别是,既然我们在XML配置中明确地定义了这一点——它不会从Spring中获得默认的defaultFailureUrl——因此就不会重定向了。

    1.2K20

    基于Spring的简易SSO设计

    ,则将请求重定向到sso 站点的login页面;此外,它还用于接收SSO登录成功后返回的token标识 1.2 SSO App 即SSO的主站点,提供统一的登录认证,并将认证后的token返回给Client...直接重定向到sso的login页面,并在returnURL参数中,将请求页面传递给sso 3.1 登录成功后,生成一个token字符串,然后将token-user info的映射关系,存入token server...性能分析: 从前面的分析可以看出,即使第一次认证成功后,后续的每个页面请求都要到SSO上验证token的真伪,这样如果并发用户比较多,SSO的压力略大,可以在client website中增加二级缓存,...登录认证,而Token Server可以用Spring-Cache来实现,至于SSO Client Filter、Client Website,Spring-MVC/Servlet Filter可以轻松搞定...,如果没有,则弹出登录窗口,将用户名、密码参数,发送到sso进行认证(相当于重定向到sso的login页面认证),认证成功后,将服务端返回的token写入本地xml(相当于sso client filter

    1.7K60

    Spring Security 做前后端分离,咱就别做页面跳转了!统统 JSON 交互

    但是使用了 Spring Security 这样的安全管理框架之后,即使你是一个新手,也不会犯这样的错误。...很明显可以强迫开发者给一个模糊的异常提示,这样即使是不懂行的新手,也不会将系统置于危险之中。 好了,这样配置完成后,无论是登录成功还是失败,后端都将只返回 JSON 给前端了。 3....未认证处理方案 那未认证又怎么办呢? 有小伙伴说,那还不简单,没有认证就访问数据,直接重定向到登录页面就行了,这没错,系统默认的行为也是这样。...但是在前后端分离中,这个逻辑明显是有问题的,如果用户没有登录就访问一个需要认证后才能访问的页面,这个时候,我们不应该让用户重定向到登录页面,而是给用户一个尚未登录的提示,前端收到提示之后,再自行决定页面跳转...这样,如果用户再去直接访问一个需要认证之后才可以访问的请求,就不会发生重定向操作了,服务端会直接给浏览器一个 JSON 提示,浏览器收到 JSON 之后,该干嘛干嘛。 4.

    6.2K30

    从0到1掌握 Spring Security(第二篇):把“原理链”讲明白,认识过滤器链,并实现自定义登录页

    最后我们以最小代码实现 自定义登录页(保留最小用户来源),一步步完成“默认表单登录”到“自定义表单登录”的迁移。 1. 全局图景:Spring Security 在应用里扮演什么角色?️...一句话心智图:请求进来 → 经过一串过滤器 → 如果未认证则引导登录 → 登录提交后走认证流程 → 认证成功把 Authentication 放进 SecurityContext → 后续请求就“带着身份...⚙️ 在 Spring Boot 中,如果你没有声明 SecurityFilterChain Bean,Boot 会为你配置一条默认链(含默认登录页、默认规则)。...原理补全:认证是如何“落袋为安”的? 认证成功后,Provider 构造一个 Authentication 对象(带用户、权限等信息)。...练习题与实践建议 ️ 练习1: 打开 org.springframework.security 的 DEBUG,按日志顺序画出一次“未登录访问受保护资源→重定向到登录页→登录成功→跳回原目标”的完整时序图

    45211

    Cas单点登录常见问题总结

    2、认证成功之后,还是进不去客户端子系统。 认证成功后,卡在了前端登录界面,就是进不去。 认证成功后的跳转路径是否经过了后端的校验过滤器。 前后端是否使用了同一个session。...安全框架问题。 在security配置文件里设置,这个接口不会会或者不会跳转即可,security框架控制某些接口不跳转。 11、过滤器顺序问题。...12、所有的请求都是200,302已经成功,但页面就是不跳转,不重定向。 按出来F12,看到请求都正常,但是页面就是不动。 检查登录接口。 检查JS回调函数。...认证成功后,访问客户端必须是经过过滤器的。 前后端同一个session。 这种前提不是固定死的,根据本身项目情况不是必要的。 但是认证成功后,访问客户端必须经过过滤器,这个前提是统一的,必须完成的。...1、拦截器是被Spring容器管理的,过滤器不可以使用IOC中的bean进行业务处理。 2、过滤器只在servlet前后起作用,拦截器深入controller方法前后,异常抛出前后。

    3K21

    Spring Security 入门

    Spring Security 是 Spring 框架中一个功能强大且灵活的安全模块。它为应用程序提供了强大的认证和授权功能,同时支持防止常见的安全攻击(如 CSRF 和会话固定攻击)。...Spring Security 验证凭据的合法性。认证成功后,生成一个 Authentication 对象,存储在 SecurityContextHolder 中。...示例:获取当前用户的信息当用户登录成功后,Spring Security 会将认证信息存储在会话中,从而在后续请求中验证用户身份。...示例:基于角色的访问控制用户登录后,如果角色为 ROLE_ADMIN,可以访问管理页面;否则,将被重定向到权限不足的页面。...登录后页面循环重定向问题:登录成功后,页面无限跳转。原因:登录页面路径和默认跳转页面相同,导致循环跳转。解决方案: 确保 defaultSuccessUrl 和 loginPage 的路径不同。2.

    64710

    Spring Boot2 系列教程(三十八)Spring Security 非法请求直接返回 JSON

    关于 Spring Security,松哥之前发过多篇文章和大家聊聊这个安全框架的使用: 手把手带你入门 Spring Security!...Spring Security 结合 OAuth2 不过,今天要和小伙伴们聊一聊 Spring Security 中的另外一个问题,那就是在 Spring Security 中未获认证的请求默认会重定向到登录页...loginPage:这个表示登录页的地址,例如当你访问一个需要登录后才能访问的资源时,系统就会自动给你通过重定向跳转到这个页面上来。...如果我们的 Spring Security 在用户未获认证的时候去请求一个需要认证后才能请求的数据,此时不给用户重定向,而是直接就返回一个 JSON,告诉用户这个请求需要认证之后才能发起,就不会有上面的事情了...这样,如果用户再去直接访问一个需要认证之后才可以访问的请求,就不会发生重定向操作了,服务端会直接给浏览器一个 JSON 提示,浏览器收到 JSON 之后,该干嘛干嘛。

    1.5K40

    Shiro多项目集中权限管理及分布式会话--Java学习网

    ,自动把请求保存下来,然后重定向到shiro-example-chapter23-server模块登录;登录成功后再重定向回来;因为SavedRequest不保存URL中的schema://domain...(authc),当用户没有身份认证时; 1、首先得到请求参数backUrl,即登录成功重定向到的地址; 2、然后保存保存请求到会话,并重定向到登录地址(server模块); 3、登录成功后,返回地址按照如下顺序获取...ClientAuthenticationFilter,即如果没有身份认证,则会重定向到Server模块完成身份认证,身份认证成功后再重定向回来。...backUrl=/chapter23-app1,即登录成功后重定向回http://localhost/chapter23-app1(这是个错误地址,为了测试登录成功后重定向地址),点击登录按钮后重定向到...3、登录成功后,会重定向到相应的登录成功地址;接着访问http://localhost/chapter23-app1/hello,看到如下图: ?

    1.1K10

    Spring Security入门(二) 基于内存存储的表单登录实战

    实现基于内存存储的登录表单认证 3.1 在SpringBoot web项目中加入Spring Security的依赖 在本人之前的boot-demo项目的pom.xml文件中引入spring-boot-starter-security...包括保护请求的URL、认证提交的用户名和密码和重定向到登录表单等。...输入user的用户和应用控制台中打印的登陆密码(32位UUID)登录成功后浏览器页面会出现下面的内容: 欢迎学习 Spring Security!...; } 4 效果测试 在IDEA中启动项目成功后就可以测试效果了 4.1 测试登录接口 在浏览你器中输入 http://localhost:8088/apiBoot/login 然后回车就可以看到和之前一样登录界面...4.2 测试 /index/user 接口和/index/admin接口 (1)使用user用户登录成功后在浏览器中输入 http://localhost:8088/apiBoot/index/user

    96830

    SpringSecurity

    SpringSecurity 本章重点: 1.什么是SpringSecurity 2.在Springboot中使用SpringSecurity安全框架 一、简介 1.1 为什么要使用安全框架 在一个项目中...它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC和AOP功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。...SpringSecurity对项目进行认证和用户得授权时,基于Sevrvlet过滤器和Spring AOP,通过各种各样得拦截器来实现的权限控制,提供了安全性解决方案,可以在web项目请求和方法调用过程中处理身份认证和授权...最核心的就是 Basic Authentication Filter 用来认证用户的身份,一个在spring security中一种过滤器处理一种认证方式。...SpringSecurity未配置时默认得登录页面,提供默认用户信息:用户名user,密码在服务器启动时自动生成显示在控制台。 登录成功跳转到static下得index.html页面。

    41710
    领券