2015-10-01 5 views
0

У меня есть класс API, в котором несколько методов имеют разные требования к правилам доступа, например. только пользователи в группе могут получить доступ к этому API, или этот API разрешает доступ к неавторизованному доступу.Spring RestController AOP правила пользовательского доступа для каждого метода

Какова наилучшая практика для этого весной?

Я надеялся использовать AOP, чтобы обработать это с помощью специальной аннотации, но после изучения это не представляется возможным. например

@RequestMapping("/getGroup") 
@GroupMembersOnly 
+2

Вы читали о весенней безопасности? – Jens

ответ

0

Я получил эту работу сейчас.

аннотаций

@Retention(RetentionPolicy.RUNTIME) 
@Target({ElementType.METHOD}) 
@Inherited 
@Documented 
public @interface GroupMembersOnly { 

} 

Часть I отсутствует в моем классе конфигурации

@Aspect 
public class AopConfiguration{ 
... 
@Around("execution(* *(..)) && @annotation(groupMembersOnly)") 
    public Object around(ProceedingJoinPoint point, GroupMembersOnly groupMembersOnly) throws Throwable { 

    //do something, e.g. use point.getArgs() 
    //to do something with the menthod arguments 

    //give control back to method 
    return point.proceed(); 
} 
} 

Тогда на метод, который я хочу, чтобы перехватить

@RequestMapping("/getGroup") 
@GroupMembersOnly 
public ResponseEntity<List<String>> readMembers(HttpServletRequest request, HttpServletResponse response) { 
/*Add HttpServletRequest request, HttpServletResponse response arguments if you 
want to do something with them in the interceptor*/ 
Смежные вопросы