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

标签 java spring spring-mvc spring-security

我们使用 Spring Security 来保护我们的 Controller 方法。假设我有一个允许我编辑 Foo 的 Controller 。

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

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

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

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

最佳答案

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

String[] roles = FooEditorController.class.getAnnotation(Secured.class).value();

关于java - 有没有办法访问@Secured中指定的角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29323820/

相关文章:

java - 如何使用 R、Java 和 JRI 绘制图形?

java - 链接列表泛型java

java - JTextField 中的 Ctrl-Delete

java - 简单的 Spring Boot 应用程序中使用了哪种 ApplicationContext 实现?

jsp - 将 ArrayList 从 Spring MVC 操作传递到 JSP 时出现问题

Spring MVC 处理程序拦截器,带有 pathparam 的排除路径模式

java - 如何插入定时器来处理排序

java - 带有 Eureka 服务器的 Spring Boot 1.4.2.RELEASE - 异常 : org. springframework.beans.factory.NoSuchBeanDefinitionException

java - 无法将 Spring Boot war 部署到 Elastic Beanstalk

java - 使用 Spring Data Rest 为 Controller 和存储库提供相同的 url 映射