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

Spring Boot, Spring Security 指定重定向登录 URL

阎承
2023-03-14

在我的Spring Boot应用程序中,我需要实现以下场景:

匿名用户访问以下页面:http://example.com/product-a.html此用户想询问有关此产品的问题。它可以在另一个页面上完成,地址如下:http://example.com/product-a/ask。用户按上的提问按钮http://example.com/product-a.html并显示登录/注册弹出窗口。成功登录后,用户应自动重定向到http://example.com/product-a/ask(但目前使用默认的Spring Security实现)用户正在重定向回页面发起者http://example.com/product-a.html

如何正确使用Spring Boot/Spring Security实现/配置这种重定向?

已更新

这是我的web安全配置:

@Override
protected void configure(HttpSecurity http) throws Exception {

    // @formatter:off
    http.addFilterBefore(new CorsFilter(), ChannelProcessingFilter.class);

    http
        .csrf().ignoringAntMatchers("/v1.0/**", "/logout")
    .and()
        .authorizeRequests()

        .antMatchers("/oauth/authorize").authenticated()
        //Anyone can access the urls
        .antMatchers("/images/**").permitAll()
        .antMatchers("/signin/**").permitAll()
        .antMatchers("/v1.0/**").permitAll()
        .antMatchers("/auth/**").permitAll()
        .antMatchers("/actuator/health").permitAll()
        .antMatchers("/actuator/**").hasAuthority(Permission.READ_ACTUATOR_DATA)
        .antMatchers("/login").permitAll()
        .anyRequest().authenticated()
    .and()
        .formLogin()
            .loginPage("/login")
            .loginProcessingUrl("/login")
            .failureUrl("/login?error=true")
            .usernameParameter("username")
            .passwordParameter("password")
            .permitAll()
        .and()
            .logout()
                .logoutUrl("/logout")
                .logoutSuccessUrl(logoutSuccessUrl)
                .permitAll();
    // @formatter:on
}

我使用 OAuth2/JWT Implicit Flow for AngularJS 客户端

共有1个答案

童华池
2023-03-14

我认为你不应该使用Spring的默认 /login处理url,而是在控制器中创建自己的 /mylogin。然后你可以在方法中注入HttpServlet请求,并根据请求的上下文采取行动,例如:

@PostMapping("/mylogin")
public ResponseEntity<> processingLogingURL(HttpServletRequest request){
   // switch bases on the request URL after checking security off course
   switch(request.getRequestURL()){

    //redirect based on the caller URL 
  }

}

最后更改。loginProduceUrl(“/login”)。loginProduceURL(“/mylogin”)

 类似资料:
  • 我正在将DNN应用程序从07.00.02升级到07.03.04并在安装后将所有门户重定向到登录页面。所有门户都配置有一个登陆页面,该页面被配置为允许“所有用户”角色视图访问。还有人在升级后遇到过这个问题吗? 2015-02-05 05:45:01 127.0.0.1 GET/-80-127.0.0.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/

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

  • Reducer.js 我想在成功登录后重定向/主页。我如何重定向?

  • 我想限制我的WordPress网站的某些页面登录用户。 为此,我编写了一些代码,将用户重定向到登录页面,并设置我的成员身份插件,然后将他们重定向到最后一个用户页面。问题是,wp_redirect函数不保存URL,所以在登录之后,用户会被重定向到他们之前所在的页面,而不是他们试图访问的页面(受限页面)。 对这个烦人的问题的任何帮助都将非常感激!:)我的代码在下面。

  • 我在Laravel5.2中使用了php artisan函数。 我想重定向的客人登录页面,若客人点击链接,只有用户并没有客人。 我想在登录后将用户重定向到后面的页面。 我怎么能这么做?请详细展示一些文件名示例。 ///////编辑 路线 控制器 Kernel.php

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