Java init惰性bean中的Spring安全身份验证对象
我在Java init惰性bean中的Spring安全身份验证对象,java,spring,spring-security,Java,Spring,Spring Security,我在身份验证对象中使用角色实现Spring安全,用于通过@Secure(“角色”)注释限制对我的服务的访问。 一切似乎都很正常,对于不好的身份验证角色,Spring Security会抛出拒绝访问异常 我的问题出现在我的集成测试中,因为在测试开始之前,我正在使用一些init lazy bean来加载一些信息,在那一刻,当我试图访问这个有限的服务时,我收到了拒绝访问异常。 在我的单元测试中,我解决了同样的问题,并使用一些带有安全注释的服务创建身份验证对象,并添加到SpringContextHold
身份验证对象中使用角色实现Spring安全,用于通过@Secure(“角色”)
注释限制对我的服务的访问。
一切似乎都很正常,对于不好的身份验证角色,Spring Security会抛出拒绝访问异常
我的问题出现在我的集成测试中,因为在测试开始之前,我正在使用一些init lazy bean来加载一些信息,在那一刻,当我试图访问这个有限的服务时,我收到了拒绝访问异常。
在我的单元测试中,我解决了同样的问题,并使用一些带有安全注释的服务创建身份验证
对象,并添加到SpringContextHolder
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList("ADMIN_ROLE");
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken("test@test.com", "test", authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
List authorities=AuthorityUtils.createAuthorityList(“管理员角色”);
UsernamePasswordAuthenticationToken身份验证=新的UsernamePasswordAuthenticationToken(“test@test.com“,”测试“,权威机构);
SecurityContextHolder.getContext().setAuthentication(身份验证);
但是,当我启动Jetty服务器进行集成测试时,我的init lazy Bean正在运行并运行此代码,情况与单元测试中的情况不同,Spring会向我抛出拒绝访问异常
,因为在SecurityContext
中找不到任何身份验证
对象
谁能帮帮我 您需要将SecurityContext附加到会话。由于它是螺纹连接的,否则将丢失以备将来使用。有关更多详细信息,请参阅以下答案 我发现在init lazy bans运行期间,使用@PreAuthorize(“hasRole('USER_ROLE'))是有效的。因此,我可以避免在会话中添加SecurityContext。Abd感谢上帝,因为init lazy bean不是一个Servlet,所以不可能实现您的提议