2013-10-07 45 views
1

我打电话从网络层以下方法抛出登录的用户具有连接的权限:旁路春季安全@preauthorize

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

但现在我想通过调度工作,把它称为其意味着我没有登录的用户。

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

+0

您的用户在哪里存储?调度程序独立应用程序?你可以添加方法/类到包含安全方法的应用程序吗?您的安全性配置为从哪里获取证书? – eis

+0

- 用户存储在DB - 调度程序不是独立的应用程序。它包含在同一个Web应用程序中。 - 安全的方法是我上面附加的方法。它只从数据库获取所有用户。 – Abdullah

回答

2

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

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

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

然后使调度的代码调用doGetAllUsers()