2017-06-01 92 views
-2

我想使用我创建的页面进行身份验证,它是login.jsf。我使用.loginPage / login.jsf有2个输入和1个按钮进行身份验证。但是,通过填写登录名和密码字段,然后单击该按钮,什么都不会发生。不像Spring Security自己拥有.formLogin()本身,它已经通过点击按钮来完成所有的处理。自定义.formLogin()Spring安全

我的方法

@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

+0

提交表单时请求的URL是什么? – chaoluo

+1

@Juan是login.html,login.html表单打开正常。但单击“登录”不会处理,只是默认为Spring的.formLogin()。 – Diego

+0

混合Spring-mvc和JSF容易出错 – Kukeltje

回答

0

看看从春天的安全文档下面的文章。

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

引用的文章,

我们提出我们的用户名和密码的网址是相同的URL作为我们 登录表单(即/登录),但POST一个GET代替。

所以我相信你必须使用你的验证细节进行POST调用到/ login端点才能工作。

+0

感谢您的回答。 即使使用错误404的.loginPage(“/ login”)。 – Diego

+0

使用Spring Security的内置登录处理程序时,不需要处理POST请求登录。只有GET请求需要处理,以便在URL访问时提供正确的页面。 POST请求和后续认证由Spring使用配置@Diego内部处理,Gean daFé使用'.formLogin()'指定。 –

0

在配置中指定页面时,不要使用文件扩展名。 ViewResolver将照顾它。只需指定

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

并确保一个ViewResolver被配置为追加.jsf到的URL。 DispatcherServlet将负责定位适当的页面。

此外,更不用说,您应该有控制器与定义适当的@RequestMapping s处理您的请求。

相关问题