Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java init惰性bean中的Spring安全身份验证对象_Java_Spring_Spring Security - Fatal编程技术网

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,所以不可能实现您的提议