自定义.formLogin()Spring Security

时间:2017-06-01 22:18:22

标签: spring spring-mvc jsf spring-security

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

我的方法

@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 :(得分:0)

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

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

引用文章,

  

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

所以我相信您必须使用您的身份验证详细信息对/ login端点进行POST调用才能生效。

答案 1 :(得分:0)

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

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

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

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