2013-10-07 78 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()