有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring security@PreAuthorize(“hasAnyRole(“…”))

我正在使用spring security@PreAuthorise检查谁和谁不能访问我的服务层中的方法。它运行得非常好。通常我的服务方法都带有注释

@PreAuthorize("hasAnyRole('MY_USER_ROLE')")

我的问题是我有一个由几个jar文件组成的war文件。每个jar文件都负责一段业务逻辑。现在我想让一个jar文件中的一个服务访问另一个jar文件中的另一个服务。由于权限问题,此操作将被拒绝。如果我对许可进行了注释,那么一切都正常

在调用此服务之前,我是否可以通过spring进行身份验证?(可能是一个虚拟用户?)或者关闭同一应用程序中JAR的安全性?还是我的设计错了

还有谁有这种问题吗?我应该使用什么样的设计


共 (1) 个答案

  1. # 1 楼答案

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

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

    但是,如果线程是由某个计时器服务触发的,那么您需要为它们提供正确的身份验证

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