在尝试进入登录页面时重定向具有Java spring-security的已登录用户

时间:2019-09-05 07:38:38

标签: java spring-security

Java Spring应用程序
_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();
    }

预期:将用户重定向到特定的网址
实际:用户进入页面并具有登录表单


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

1 个答案:

答案 0 :(得分:1)

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";
        }
      }

}

通过函数内部的重定向将主要参数添加到控制器即可完成工作