我从 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/