首页 > 解决方案 > 当他尝试进入登录页面时,使用java spring-security重定向已经登录的用户

问题描述

Java Spring App
_spring-security
__WebSecurityConfigurerAdapter
(自定义登录页面)

用户已登录并尝试转到登录页面

如何在扩展 WebSecurityConfigurerAdapter 类和控制器时管理这个?

我查看了几个代码,包括自定义处理程序,但我似乎无法理解它。

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeRequests()
              .antMatchers("/admin").hasRole("ADMIN")
              .antMatchers("/login*").permitAll()
              .antMatchers("/admin*").denyAll()
              .and()
          .csrf()
          .disable()
          .formLogin()
          .loginPage("/login")
          .defaultSuccessUrl("/admin")
          .failureUrl("/login?error=true")
          .and()
          .logout().logoutSuccessUrl("/login?logout=true");

        http.headers().frameOptions().disable();
    }

预期:用户被重定向到特定的 url
实际:用户进入页面并拥有登录表单


我知道 XML 解决方案和文档,但我没有找到必要的信息来理解这里必须做什么。任何帮助,将不胜感激。

标签: javaspring-security

解决方案


https://bach.mystories.vn/2018/06/12/redirect-logged-in-users-when-accessing-login-page/

3个小时的搜索,我终于在发布问题后得到了必要的简单信息,所以我不妨自己回答:

@Controller
public class MainController {

      @GetMapping("/register")
      public String register(Model model,Principal principal) {
        if(principal!=null){
          return "redirect:/";
        }
        else{
          UserRegistrationDTO userRegistrationDTO = new UserRegistrationDTO();
          model.addAttribute(userRegistrationDTO);

          return "userregistration";
        }
      }

}

在函数内部使用重定向将主要参数添加到控制器完成了这项工作


推荐阅读