2016-04-19 9 views
3

Я угадал ответ нет здесь, но мне было интересно, если есть способ, чтобы создать пользовательский аннотацию, как это:Весенняя безопасность - Пользовательская аннотация аннотации аннотации?

@Documented 
@Inherited 
@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.TYPE, ElementType.METHOD}) 
@PreAuthorize("hasAuthority('" + PermissionRequired.value() + "')") //doesn't work 
public @interface PermissionRequired { 
    String value(); 
} 

Так что я могу сделать это:

@PermissionRequired("CREATE_USER") 
public User createuser(User newUser){ 
//.. 
} 

Но похоже, не существует способа ссылаться на составляющую аннотацию, как я делаю выше. Это не похоже на что-то, что @AliasFor решит, поскольку я не использую поле напрямую, я конкатенирую его с другой строкой.

Моей целью здесь является создание аннотаций безопасности, для которых не требуется SpEl.

ответ

1

JSR-250 на помощь!

Включите его в своем классе приложения:

@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true) 
public class MyApplication { 
//.. 
} 

Используйте свою аннотацию:

@RolesAllowed({"ROLE_CREATE_USER"}) 
public User createuser(User newUser){ 
//.. 
} 

Это, кажется, требует "ROLE_" префиксы на ваших властей, хотя.

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