登录不使用登录表单

时间:2017-09-19 09:42:40

标签: java spring spring-security

我正在使用Spring Security 4。 我的配置如下:

http
    .requiresChannel()
        .and()
    .authorizeRequests()
        .antMatchers("<URLS>").hasAnyAuthority(CUSTOMER.toUpperCase(), BRANCH.toUpperCase())
        .and()
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .formLogin()

使用此配置,我可以访问Spring的登录URL:

localhost:9080/contextpath/login?username=BNH123456&password=pass

但现在我使用登录表单配置如下:

http
    .requiresChannel()
        .and()
    .authorizeRequests()
        .antMatchers("<URLS>").hasAnyAuthority(CUSTOMER.toUpperCase(), BRANCH.toUpperCase())
        .and()
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .formLogin()
        .loginPage(journey.equalsIgnoreCase("customer") ? "/" : "/#!/login")

我无法访问Spring的登录网址。它说:

  

错误404。

在定义登录表单时是否需要定义自定义控制器?

我想使用自定义登录表单,但它使用的是Spring的登录URL。 (如果我使用Postman发布登录请求,则应进行身份验证。)

任何人都可以指导。

1 个答案:

答案 0 :(得分:0)

如果您更改登录页面的网址,还要更改登录网址,请参阅FormLoginConfigurer#loginPage

  

对其他默认值的影响

     

更新此值也会影响许多其他默认值。例如,以下是仅指定formLogin()时的默认值。

     
      
  • / login GET - 登录表单
  •   
  • / login POST - 处理凭据,如果有效,则验证用户
  •   
  • / login?error GET - 此处重定向失败的身份验证尝试
  •   
  • / login?logout GET - 成功注销后重定向
  •   
     

如果将“/ authenticate”传递给此方法,则会更新默认值,如下所示:

     
      
  • / authenticate GET - 登录表单
  •   
  • / authenticate POST - 处理凭据,如果有效,则验证用户
  •   
  • / authenticate?error GET - 此处重定向以查找失败的身份验证尝试
  •   
  • / authenticate?logout GET - 在成功注销后重定向到此处
  •   

有两种解决方案:

相关问题