有没有办法访问@Secured中指定的角色?

时间:2015-03-28 23:28:09

标签: java spring spring-mvc spring-security

我们正在使用Spring Security来保护我们的控制器方法。假设我有一个允许我编辑Foo的控制器。

@Controller
@Secured({"FOO_ADMINISTRATOR"})
public class FooEditorController {
...
}

现在我需要在我的UI中添加一个菜单,让用户访问Foo Editor。但我只想向有权访问FooEditorController的用户提供该菜单选项。此外,如果可能的话,我想将信息保存在一个地方。也就是说,当我指定Foo Editor的菜单选项仅限于具有FOO_ADMINISTRATOR角色的菜单选项时,我想简单地查询FooEditorController并询问它需要哪些角色。这样,这些信息就在一个地方定义。

(我尝试创建角色数组并在两个地方使用它们,但@Secured注释不允许这样做。@ Secure需要一个数组初始值设定项。)

或许有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果要访问@Secured注释中指定的角色(或任何注释中指定的值),可以使用反射来实现:

String[] roles = FooEditorController.class.getAnnotation(Secured.class).value();
相关问题