在 REST 环境中使用 Spring Session/Security 时如何使用 `with(user(`
How to use use `with(user(` when using Spring Session/Security in REST environment
当使用 Spring Session 和 HeaderHttpSessionStrategy
时,是否可以用 SecurityMockMvcRequestPostProcessors.user
填充测试用户。
我试过类似的东西:
mockMvc.perform(
get(URL)
.with(user("user").password("pwd").roles("USER", "ADMIN")))
.andExpect(status().isOk())
但它 returns 一个 403。
没有 with(user(
我得到一个 401 所以有区别。
我有一个失败的简单 SecurityConfig
包含:
http
.anonymous()
.and()
.authorizeRequests()
.antMatchers("/api/**").hasAuthority("USER")
.and()
.csrf()
.disable()
.httpBasic()
.and()
.requestCache()
.requestCache(new NullRequestCache());
我与 https://github.com/spring-projects/spring-session/tree/1.0.1.RELEASE/samples/rest 非常相似,因为我有一个端点,我使用 http basic 进行身份验证。它 returns 通过 header 的身份验证令牌,然后在其他 REST 调用中使用。
所以我希望我可以在这种情况下使用 with(user(
让我的测试更容易。
是的,你应该能够做到这一点。问题是
.with(user("user").password("pwd").roles("USER", "ADMIN")))
正在应用角色,这意味着会自动添加 ROLE_ 前缀。
相比之下,您的配置使用的是:
.antMatchers("/api/**").hasAuthority("USER")
不会自动添加 ROLE_ 前缀。相反,请尝试使用:
.antMatchers("/api/**").hasRole("USER")
注意:我还更新了测试以包含 example of with(user("user"))。
当使用 Spring Session 和 HeaderHttpSessionStrategy
时,是否可以用 SecurityMockMvcRequestPostProcessors.user
填充测试用户。
我试过类似的东西:
mockMvc.perform(
get(URL)
.with(user("user").password("pwd").roles("USER", "ADMIN")))
.andExpect(status().isOk())
但它 returns 一个 403。
没有 with(user(
我得到一个 401 所以有区别。
我有一个失败的简单 SecurityConfig
包含:
http
.anonymous()
.and()
.authorizeRequests()
.antMatchers("/api/**").hasAuthority("USER")
.and()
.csrf()
.disable()
.httpBasic()
.and()
.requestCache()
.requestCache(new NullRequestCache());
我与 https://github.com/spring-projects/spring-session/tree/1.0.1.RELEASE/samples/rest 非常相似,因为我有一个端点,我使用 http basic 进行身份验证。它 returns 通过 header 的身份验证令牌,然后在其他 REST 调用中使用。
所以我希望我可以在这种情况下使用 with(user(
让我的测试更容易。
是的,你应该能够做到这一点。问题是
.with(user("user").password("pwd").roles("USER", "ADMIN")))
正在应用角色,这意味着会自动添加 ROLE_ 前缀。
相比之下,您的配置使用的是:
.antMatchers("/api/**").hasAuthority("USER")
不会自动添加 ROLE_ 前缀。相反,请尝试使用:
.antMatchers("/api/**").hasRole("USER")
注意:我还更新了测试以包含 example of with(user("user"))。