关于Spring Security
对于扩展WebSecurityConfigurerAdapter
的类,我对configure
方法有以下内容:
.and()
.formLogin()
.loginPage("/perfom/login")
.loginProcessingUrl("/perform_/login")
.usernameParameter("username")//default
.passwordParameter("password")//default
.defaultSuccessUrl("/welcome")
.failureUrl("/perfom/login?error") //default is /login?error
.permitAll()
它在运行时工作正常。直到这里没有问题。
当Spring MVC Test
播放时,我有以下内容:
@Before
public void setUp(){
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext)
.apply(springSecurity())
.build();
}
@Test
@WithAnonymousUser
public void saveOneHtmlGetForNonAuthenticatedPrincipalTest() throws Exception {
resultActions = mockMvc.perform(get(url).with(csrf().asHeader()).accept(MediaType.TEXT_HTML_VALUE)
.header("Accept-Language", ClientUserLocale.ENGLISH.getLocale().toString())).andDo(print());
resultActions.andExpect(status().isFound())
.andExpect(redirectedUrl("/perfom/login"));
}
测试失败,并显示以下错误消息:
java.lang.AssertionError:
Redirected URL expected:</perfom/login>
but was:<http://localhost/perfom/login>
不确定是否是预期的行为或遗漏的东西,不确定原因
http://localhost/
出现。
答案 0 :(得分:1)
我遇到了同样的问题,并且能够使用redirectedUrlPattern
进行修复。
您的解决方案应该是:
.andExpect(redirectedUrlPattern("**/perfom/login"))