在具有生产身份验证逻辑的 MockMVC 中使用 springSecurity() 时的@WithUserDetails 和@WithMockUser

@WithUserDetails and @WithMockUser when using springSecurity() in MockMVC with production authentication logic

经过一段时间的调试,我发现@WithUserDetails@WithMockUser伪造了SecurityContext,但没有添加任何假的Authentication Provider,以防万一与生产代码一起使用,

那么..是否有任何内置方法可以方便地使用测试 @With.. 生产授权代码上的注释?这是一个错误吗?我可以更改之前要点的顺序,以便至少稍后进行测试准备吗?

正确,@WithUserDetails@WithMockUser 用于模拟已通过身份验证的请求。

因此,所有进行身份验证的过滤器不应在此时触发。如果您的过滤器正在触发,那么您可以重写过滤器以在身份验证已经发生时考虑用例。

另一种选择是重写测试以按照您的应用程序期望的方式进行身份验证。