当前位置: 首页 > 知识库问答 >
问题:

Spring Security-公共页面重定向到使用无效会话id的登录

郎弘壮
2023-03-14

我遇到了一个问题,当您已经有一个不再有效的SessionID时,public URL在Spring security中无法工作。

示例:
我有user-register页面,并给它一个permitAll访问权限,如下所示:

http.authorizeRequests().antMatchers("/register**").permitAll();
http.authorizeRequests().anyRequest().authenticated();
http.formLogin().loginPage("/login").permitAll();
http.sessionManagement().invalidSessionUrl("/login?logoutcause=sessiontimeout");
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED);
http.sessionManagement().sessionAuthenticationErrorUrl("/login");
http.sessionManagement().maximumSessions(1).maxSessionsPreventsLogin(true);
http.sessionManagement().sessionFixation().newSession();
o.s.s.w.s.SessionManagementFilter        : Requested session ID 8ad2e166-bc21-4646-8390-ad8d1043baec is invalid.
w.s.SimpleRedirectInvalidSessionStrategy : Starting new session (if required) and redirecting to '/login?logoutcause=sessiontimeout'
o.s.s.w.DefaultRedirectStrategy          : Redirecting to '/login?logoutcause=sessiontimeout'
@Override
public void configure(WebSecurity web) throws Exception {
  web.ignoring().antMatchers("/register/**");
  super.configure(web);
}

我禁用了以下配置,它解决了我的所有问题

// DISABLED
// http.sessionManagement().invalidSessionUrl("/login?logoutcause=sessiontimeout"); 

这不是最好的方法,对吧?什么是更好更有保障的方法去做。请帮助我理解为什么spring会这样做,或者我配置错了什么。

共有1个答案

宇文勇
2023-03-14

我通过添加以下配置解决了同样的问题:

.antMatchers("/login-invalid").permitAll()
 类似资料:
  • 问题内容: 我正在使用ASP.NET MVC。我想在会话过期时重定向到登录页面。我该如何实现?如果我正在对控制器中的方法进行AJAX调用,那么如果在这种情况下我的会话期满,我也想重定向到登录页面。 问题答案: 您可以通过3种方式做到这一点: 为您的操作创建一个过滤器,并将其应用于OnActionExecuting中的代码编写(在执行操作之前),http://www.asp.net/mvc/tuto

  • 我使用的是和和。一切都很好,但是当会话超时的时候,我会得到以下错误”,因为我已经在布局的main.gsp文件中调用了session变量。现在,我希望在每次会话超时后重定向到登录页面,并且不显示错误页面。要在会话超时后重定向,我已经在文件中这样做了 但是有这么多页,所以很难写每一页。还有其他的方法做这件事吗?请帮忙。

  • 我现在一直在努力使用我的登录页面来让组件呈现Loggedin组件。我的前端是Reactjs,后端是NodeJS。我对nodejs、expression和react都是新手。 在loginform组件上,我使用fetch进行了一次post,它将用户名和密码传递给后端的相应endpoint。没问题。在后端,它读取我存储用户(不使用任何数据库)的jsonfile来查找匹配项,如果用户名和密码都匹配,则它

  • 我在spring Boot1.2.3 web应用程序中使用spring security 4.0.1(也使用Spring-Session1.0.1,但这与本案无关)。 每当登录的用户会话过期时,Spring就会检测到无效的会话,并将用户重定向到“.invalidsessionURL(”/session/error/invalid“)” 然而,我只想被重定向,如果目标链接在私人区域内,也不是公共区域

  • 这是views.py的内容: 在转到“/”时,我被重定向到“/accounts/login”,它将我带到登录页面。我输入用户名和密码后,在“验证”打印语句printd“登录”到终端。 到目前为止还不错。现在,我不再被重定向到“/”,而是再次被重定向到“/accounts/login”,并再次显示输入用户名和密码的页面。为什么?

  • 记录器文件中的日志- org.springframework.Security.Access.event.loggerlistener-安全授权失败,原因是:org.springframework.Security.Access.accessdeniedexception:访问被拒绝;通过身份验证的主体:org.springframework.security.authentication.ano