我正在使用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发布登录请求,则应进行身份验证。)
任何人都可以指导。
答案 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 - 在成功注销后重定向到此处
有两种解决方案:
/
)或/login
),请参阅AbstractAuthenticationFilterConfigurer#loginProcessingUrl