java - Spring 安全@PreAuthorize ("hasAnyRole(' ... .')")

标签 java spring spring-security

我正在使用 spring security @PreAuthorise 来检查谁和谁不能访问我的服务层中的方法。它真的很好用。通常我的服务方法都是用

注解的
@PreAuthorize("hasAnyRole('MY_USER_ROLE')")

我的问题是我有一个由几个 jar 文件组成的 war 文件。这些 jar 文件中的每一个都负责一段业务逻辑。我现在想要一个 jar 文件中的一项服务访问另一个 jar 文件中的另一项服务。由于权限,这被拒绝了。如果我注释掉权限,那么一切正常。

无论如何我可以在调用此服务之前通过 spring 进行身份验证吗? (也许是虚拟用户?)或者在同一个应用程序中关闭 jar 的安全性?还是我的设计有误?

有没有人遇到过这样的问题?我应该改用什么设计?

最佳答案

您需要为调用服务的线程(在另一个 jar 中)提供 @PreAuthorize(对于调用的服务)所需的权限。

如果线程是由用户请求在 Web 应用程序中触发的,那么这通常是用户权限。

但是如果线程是由一些定时器服务触发的,那么你需要给他们正确的身份验证

    Authentication authentication = new UsernamePasswordAuthenticationToken("dummy", "password");
    SecurityContext securityContext = SecurityContextHolder.getContext();
    securityContext.setAuthentication(authentication);

关于java - Spring 安全@PreAuthorize ("hasAnyRole(' ... .')"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645463/

相关文章:

java - 无法获取 Jedis 连接;无法从池中获取资源

Spring 安全性:记住我 token 仅工作一次

java - 使用 0 值调用 setSoLinger 与根本不启用 soLinger 有什么区别?

java - 您可以生成使用 Java 注释覆盖方法的代码吗?

java - Spring 存储库和 DATA_FORMAT 与 nativeQuery=false

java - userTransaction回滚方法在使用中?

java - GUI 未按预期显示

java - Spring AOP : is there a way to make @target work for indirect annotations?

rest - Spring Data Rest with Spring Security - 按当前用户查找所有

java - 添加带有 spring security 的自定义登录 Controller