2013-08-07 4 views
1

Я прочитал документацию по безопасности весны и узнал, что могу использовать следующую аннотацию, чтобы проверить, имеет ли объект доступ к редактированию пользователя.Пользовательская аннотация с весенней безопасностью

@PreAuthorize("hasPermission('USER_EDIT')") 
public String editUSer(User user); 

То, что я хотел бы сделать, это написать свой собственный аннотаций MyAutorizationCheck и использовать его, как показано ниже

@MyAuthorizationCheck(Application.USER_MANAGEMENT, AccessLevel.EDIT) 
public String editUSer(User user); 

Где Применение и AccessLevel является перечислением.

enum Application{ 
    USER_MANAGEMENT, ORDER_MANAGEMENT 
} 

enum AccessLevel{ 
    READ, CREATE, UPDATE, DELETE 
} 

Обработчик этой аннотации должен иметь возможность решить, имеет ли пользователь разрешение или нет.

Любые указатели, как достичь этого?

спасибо.

+0

ли вы когда-нибудь найти решение этой проблемы? У меня такой же вопрос без ответов. – user1751547

ответ

0

Это не прямой ответ на ваш вопрос.

Как workoround вы можете продолжать использовать встроенные аннотации:

@PreAuthorize("hasPermission('USER_MANAGEMENT_READ')") 
@PreAuthorize("hasPermission('USER_MANAGEMENT_CREATE')") 
@PreAuthorize("hasPermission('USER_MANAGEMENT_UPDATE')") 
@PreAuthorize("hasPermission('USER_MANAGEMENT_DELETE')") 

@PreAuthorize("hasPermission('ORDER_MANAGEMENT_READ')") 
@PreAuthorize("hasPermission('ORDER_MANAGEMENT_CREATE')") 
@PreAuthorize("hasPermission('ORDER_MANAGEMENT_UPDATE')") 
@PreAuthorize("hasPermission('ORDER_MANAGEMENT_DELETE')") 
Смежные вопросы