2013-10-07 3 views
1

Я звоню следующий метод из веб-слоя бросить зарегистрированный пользователь, который имеет прикрепленную разрешение:Обходной Spring Security @preauthorize

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

Но теперь я хочу назвать его через планировщик заданий, который означает, что у меня нет зарегистрированного пользователя.

Есть ли способ обойти этот аннотацию @PreAuthorize («hasRole („list_users_permission“)») или создать виртуальный пользователь со всеми необходимыми разрешениями?

+0

Где хранятся ваши пользователи? является автономным приложением планировщика? можете ли вы добавить методы/классы в приложение, содержащее защищенный метод? где ваша система безопасности настроена на получение учетных данных? – eis

+0

- Пользователи хранятся в DB - Планировщик не является автономным приложением. Он содержится в одном и том же веб-приложении. - Защищенный метод - тот, который я приложил выше. Это только получение всех пользователей из БД. – Abdullah

ответ

2

Во-первых, сделать getAllUsers() делегат незащищенному метода:

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

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

Затем сделать планируемую код вызова doGetAllUsers().

Смежные вопросы