我从 web 层调用以下方法抛出具有附加权限的登录用户:

@PreAuthorize("hasRole('list_users_permission')")
public List<UserDto> getAllUsers() {
    ........
}

但是现在我想通过调度程序作业调用它,这意味着我还没有登录用户。

有没有办法绕过这个注释 @PreAuthorize("hasRole('list_users_permission')") 或创建一个具有所有所需权限的虚拟用户?

最佳答案

首先,将 getAllUsers() 委托(delegate)给非安全方法:

@PreAuthorize("hasRole('list_users_permission')")
public List<UserDto> getAllUsers() {
    return doGetAllUsers();
}

public List<UserDto> doGetAllUsers() {
    ...
}

然后让预定的代码调用 doGetAllUsers()

关于java - 绕过 Spring Security @preauthorize,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19223683/

10-12 13:59