fra*_*ayz 7 spring-security mockmvc
我想这个下实现与Spring Security的定制无国籍身份验证的文章
我面临的问题是框架没有调用我的自定义过滤器,即使我的SecurityConfig看起来与上一个链接看起来几乎相同(稍微简单一点):
@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
@Qualifier("appAuthenticationProvider")
private AuthenticationProvider authenticationProvider;
@Autowired
@Qualifier("appAuthenticationFilter")
private AppAuthenticationFilter appAuthenticationFilter;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable().
sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests().anyRequest().authenticated()
.and()
.anonymous().disable()
.exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
http.addFilterBefore(appAuthenticationFilter, BasicAuthenticationFilter.class);
}
@Bean
public AuthenticationEntryPoint unauthorizedEntryPoint() {
return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
}
Run Code Online (Sandbox Code Playgroud)
我没有发布authenticationProvider和appAuthenticationFilter的代码,因为前者工作正常(我可以使用/ login端口登录)而后者只是实现了GenericFilterBean而且甚至没有被调用.
任何帮助将非常感激!
好的,我在发现部署Spring Boot应用程序时正在执行过滤器之后找到了解决方案,并且仅在运行测试时才调用它们.然后我发现这篇文章:
https://spring.io/blog/2014/05/23/preview-spring-security-test-web-security
我忘了配置我的模拟MVC来使用过滤器.最后,我的身份验证测试类如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = GasApplication.class)
@WebAppConfiguration
public class LoginControllerTest {
@Autowired
private WebApplicationContext context;
@Autowired
@Qualifier("appAuthenticationFilter")
private Filter appAuthenticationFilter;
private MockMvc mockMvc;
@Before
public void init() throws Exception {
this.mockMvc = MockMvcBuilders.webAppContextSetup(context)
.addFilter(appAuthenticationFilter, "/resource")
.build();
}
// Tests here...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3457 次 |
最近记录: |