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

Spring Boot security将用户重定向到成功登录后的主页,而不是登录页面请求前的页面

慕河
2023-03-14
http.authorizeRequests().antMatchers("/secured/**").hasAuthority("USER").antMatchers("/", "/**").permitAll();
http.formLogin().loginPage("/login").failureUrl("/login-error").and().logout().logoutUrl("/logout").logoutSuccessUrl("/");
http.httpBasic();

无论我从哪里登录,用户都再次被引导到主页“/”,而不是登录前请求的页面。

例如,http://localhost:8080/products?type-name=...不受保护,任何人都可以查看它。但是,如果用户试图从此页面登录,他们将被重定向到主页,而不是在登录后停留在http://localhost:8080/products?type-name=...。如何配置安全性以防止这种情况发生?

即使从/securite/..URL登录,用户也会被重定向到主页。

@RequestMapping(path = "/login", method = RequestMethod.GET)
    public String loginGetHandler(HttpServletRequest req) {
        System.out.println("Referer: " + req.getHeader("referer")); 
        return "login";
    }

但是在提交登录表单之后,引用器将从预期的url更改为“http://localhost:8080/login”。因此,当我实现一个SuccessShandler重定向到referer url时,用户再次被重定向到登录页面,尽管成功登录。

此外,当我使用默认的spring boot+安全配置时,应用程序能够在登录前正确地将用户重定向到以前的url。在自定义配置中有保留吗?

共有1个答案

施刚毅
2023-03-14

您可以使用Spring中的SavedRequest

原始请求由DefaultSavedRequest对象表示,该对象可以作为名为spring_security_saved_request的会话属性访问。

https://docs.spring.io/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/web/savedrequest/savedrequest.html

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

  • 我们的团队正在使用Spring boot(2.2.2)开发一个web应用程序。它使用Spring security来处理登录过程。我们希望应用程序在登录前重定向回页面(例如,用户访问)http://example.com/foo/bar - 除了应用程序偶尔指向默认页面(例如,http://example.com)而不是登录前的页面。发生这种情况时,登录前的页面似乎没有保存在会话中(根据我的队友的

  • 我正在我是身份提供者的地方实施SSO,现在我能够成功登录到服务提供者。但它把我带到了主页。我想在发布响应时指定着陆页URL。搜索了很多,但找不到任何令人信服的东西。不太知道SAML响应的哪个元素携带着陆页URL或采用我必须指定的形式。使用java和opensaml库生成响应。

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

  • 我在模态窗口中有登录表单。成功登录后,用户被重定向到< code>/页面。我正试图找到一种方法,在登录后留在联系页面或另一个页面。如何做到这一点?我的代码是:

  • 问题内容: 我想设置我的网站,以便如果用户点击该页面并且他们已经登录,它将把他们重定向到主页。如果未登录,它将正常显示。由于登录代码内置在Django中,我该怎么做? 问题答案: 我假设你当前正在使用内置的登录视图, 或你网址中的类似内容。 你可以编写包含默认视图的登录视图。它将检查用户是否已经登录,如果已经登录则重定向,否则使用默认视图。 就像是: 当然可以相应地更改你的网址: