首页 文章

自定义.formLogin()Spring Security

提问于
浏览
-2

我正在尝试使用我创建的页面进行身份验证,它是login.jsf . 我在.loginPage / login.jsf 中使用2个输入和1个按钮进行身份验证 . 但是,通过填写登录名和密码字段,然后单击按钮,没有任何反应 . 与Spring Security自己的 .formLogin() 本身不同,它已经通过单击按钮完成了所有处理 .

My method

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
      .authorizeRequests()
      .antMatchers("/login.jsf").anonymous()
      .anyRequest().authenticated()
      .and()
      .formLogin()
      .loginPage("/login.jsf")
      .defaultSuccessUrl("/homepage.jsf")
      .failureUrl("/login.jsf?error=true")
      .and()
      .logout().logoutSuccessUrl("/login.jsf");
}

有人有什么建议吗?

打印屏幕默认.formLogin()

enter image description here

2 回答

  • 0

    请查看spring安全文档中的以下文章 .

    https://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html#creating-a-login-view

    引用文章,

    我们提交用户名和密码的URL与登录表单(即/ login)的URL相同,但是POST而不是GET .

    因此,我认为您必须使用您的身份验证详细信息对/ login endpoints 进行POST调用才能生效 .

  • 0

    在配置中指定页面时,请勿使用文件扩展名 . ViewResolver 会照顾它 . 只需指定

    .loginPage("/login").defaultSuccessUrl("/homepage")
     .failureUrl("/login?error=true")
     .and()
     .logout().logoutSuccessUrl("/login");`
    

    并确保将ViewResolver配置为将 .jsf 附加到网址 . DispatcherServlet将负责查找适当的页面 .

    另外,更不用说,您应该为控制器定义适当的 @RequestMapping 来处理您的请求 .

相关问题