我正在使用 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/