Roles
我正在对象中实现 Spring 安全性Authentication
,用于通过@Secure("ROLE")
注释限制我的服务中的访问。一切似乎都很好,并且对于身份验证不好的角色 Spring Security throw Access Denied Exception
。
我的问题出现在我的集成测试中,因为我正在使用一些 init 惰性 bean 以便在测试开始之前加载一些信息,并且在那一刻,当我试图访问这个有限的服务时,我收到了Access denied exception.
在我的单元测试中我解决了同样的问题,并使用了一些带有安全注释的服务来创建Authentication
对象,并添加到SpringContextHolder
.
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList("ADMIN_ROLE");
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken("test@test.com", "test", authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
但是当我启动我的 Jetty 服务器进行集成测试,并且我的 init 惰性 bean 正在运行并运行此代码时,情况不像在单元测试中那样工作,并且 Spring 向我抛出了Access denied exception
因为Authentication
在SecurityContext
.
请有人可以帮助我!