我们正在使用Spring Security来保护我们的控制器方法。假设我有一个允许我编辑Foo的控制器。
@Controller
@Secured({"FOO_ADMINISTRATOR"})
public class FooEditorController {
...
}
现在我需要在我的UI中添加一个菜单,让用户访问Foo Editor。但我只想向有权访问FooEditorController的用户提供该菜单选项。此外,如果可能的话,我想将信息保存在一个地方。也就是说,当我指定Foo Editor的菜单选项仅限于具有FOO_ADMINISTRATOR角色的菜单选项时,我想简单地查询FooEditorController并询问它需要哪些角色。这样,这些信息就在一个地方定义。
(我尝试创建角色数组并在两个地方使用它们,但@Secured注释不允许这样做。@ Secure需要一个数组初始值设定项。)
或许有更好的方法来解决这个问题?
答案 0 :(得分:1)
如果要访问@Secured
注释中指定的角色(或任何注释中指定的值),可以使用反射来实现:
String[] roles = FooEditorController.class.getAnnotation(Secured.class).value();