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