我有一个具有以下规则的oauth2资源服务器:
http.authorizeRequests()
.antMatchers("/api/client/all").hasRole("ADMIN")
.antMatchers("/api/client/create", "/api/client/update", "/api/client/delete/*").hasAnyRole("USER", "ADMIN")
.antMatchers("/api/client/*").hasAnyRole("USER", "ADMIN")
;
我可以使用邮递员来验证网址是否受保护,并从其他用户发送承载令牌会导致您没有正确角色的用户获得授权访问权限。因此,我的代码在运行应用程序时有效。现在,我要为资源服务器编写测试。我注意到发生了一些奇怪的事情。无论我做什么,在测试过程中只能使用AffirmativeBased决策管理器。我无法立即测试用户是否具有特定角色。运行应用程序时确实会发生这种情况,但是在junit测试期间,弹簧安全性与角色不匹配。我的测试类具有以下注释:
@WebMvcTest(ClientController.class)
应设置弹簧安全性。我还像这样注入了mockmvc:
@Autowired
private MockMvc mockMvc;
我已经看到人们在构建自己的模拟计算机而不是注入它。例如这样的
MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity())
.build();
哪种方法是正确的?为什么弹簧安全性在测试过程中无法匹配角色?