使用@AliasFor

时间:2016-08-08 15:32:56

标签: java spring spring-security

我有以下组合自定义注释与Springs @PreAuthorize注释

@RequestMapping(
        produces = MimeTypeUtils.APPLICATION_JSON_VALUE + ";charset=UTF-8",
        method = RequestMethod.GET)
@ResponseBody
@PreAuthorize(value = "hasRole('permitAll()')")
@ResponseStatus(HttpStatus.OK)
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Get {

    @AliasFor(annotation = RequestMapping.class, attribute = "value")
    String[] value() default {};

    @AliasFor(annotation = PreAuthorize.class, attribute = "value")
    String authorize() default "permitAll()";
}

我已经让以下客户使用它了

@Get(value = "/users", authorize = "hasRole('ROLE_GET_USERS')")
public List<User> retrieveUsers() {
   // body
}

正如您所看到的,目的是允许@Get注释的客户覆盖@PreAuthorize,以便他们可以提供所需的角色。

到目前为止我还没有使用@AliasFor出现任何问题,即使在此示例中@RequestMapping正在运行,但不幸的是它并没有覆盖@PreAuthorize的值,每个人都可以仍然访问资源,默认值为permitAll()

我首先想知道为什么这不起作用,第二,如果有可能使其有效?

0 个答案:

没有答案