Spring Security 自定义登录成功后的逻辑

开发 项目管理
我们有个项目是基于NW.js,用户登录是通过Spring Security来实现的。我们在nw.js环境下做了一个校验,如果用户2小时内没有任何的操作那么系统将自动调整到登录页面;这样就出现了问题,我们有很多的用户是7*24小时不关电脑的。

[[398982]]

环境:Spring Boot 2.2.11.RELEASE + Spring Security5.2.7

说下背景:我们有个项目是基于NW.js,用户登录是通过Spring Security来实现的。我们在nw.js环境下做了一个校验,如果用户2小时内没有任何的操作那么系统将自动调整到登录页面;这样就出现了问题,我们有很多的用户是7*24小时不关电脑的。当用户下班2小时后系统就自动跳转到了登录页面,第二天用户上班了后登录系统调不到之前的操作页面。用户天天投诉。其实当我们访问需要用户认证的页面时没登录情况下都会跳到登录页如果30分钟内什么都不操作同样也是跳不回去的。

基于上面的问题后来跟踪了下源码发现Spring Security是通过session来保存之前的请求的所有相关信息,源码如下:

认证通过后执行下面的逻辑

AbstractAuthenticationProcessingFilter.java

这里的successHandler默认是使用的如下handler。

SavedRequestAwareAuthenticationSuccessHandler.java

requestCache对象的实例是HttpSessionRequestCache

HttpSessionRequestCache.java部分源码

  1. DefaultSavedRequest savedRequest = new DefaultSavedRequest(request,portResolver); 
  2. if (createSessionAllowed || request.getSession(false) != null) { 
  3.     request.getSession().setAttribute(this.sessionAttrName, savedRequest); 
  4.     logger.debug("DefaultSavedRequest added to Session: " + savedRequest); 

 这里就是把当前的request对象进行了保存然后放到了session中,保存后再跳转到登录授权页面。session不配置的情况下默认就是30分钟。

当时为了简单快速解决问题,我之间吧session的有效性调整了1天时间,安静了一段时间后,以为没事了。万万没想到后来有几个用户有投诉了o(╥﹏╥)o,大概了解了下他们说有时候几天才用一次系统(就这样他们还是不关电脑)。。。没办法只能继续改代码了。

通过上面贴的源码也知道了就是从session获取到之前的request对象然后进行了重定向。

在配置HttpSecurity时配置自定义sucessHandler,如下

nw.js在做跳转的时候,我把用户之前的操作页面地址记录下来作为一个参数传递。这样就不怕session过期了。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-07-13 14:05:37

单点登录页面

2010-02-12 09:32:51

Windows 7修改登录画面

2011-03-17 09:45:01

Spring

2023-12-04 07:27:54

SpringMVC方法

2015-02-12 15:33:43

微信SDK

2024-01-23 13:13:09

2022-11-26 00:00:02

2018-07-06 15:58:34

SpringSchemaJava

2015-01-14 15:06:48

定义相机

2015-02-12 15:38:26

微信SDK

2020-11-25 11:20:44

Spring注解Java

2017-08-03 17:00:54

Springmvc任务执行器

2022-06-20 08:26:39

Spring容器类型转换

2021-09-24 09:52:13

登陆页面注册流程设计

2016-11-16 21:55:55

源码分析自定义view androi

2023-05-30 07:56:23

代码软件开发

2016-12-26 15:25:59

Android自定义View

2011-06-23 10:49:13

Qt 自定义信号

2022-06-06 09:01:16

SwiftUI自定义导航

2010-10-25 16:05:07

oracle自定义函数
点赞
收藏

51CTO技术栈公众号