1

我正在使用 LDAP 插件和 Spring Security 插件。LDAP 插件获取登录用户所属的组。我的应用程序有两个角色adminnormal. 而不是硬编码角色,我想通过属性文件使它们可配置。这样,而不是写

@Secured(["ROLE_ADMINS"])

我可以写类似的东西

@Secured(["role.admins"])

role.admins=ROLE_ADMINS配置文件中的位置。

通过这种方式,我可以获取相同的 WAR 文件并将其部署在多个客户端上,每个客户端都有自己在 ActiveDirectory 中配置组名的标准化方法。

4

1 回答 1

1

你可以让它工作,但我认为有更好的选择。注释目前有点死板,仅支持以ROLE_、 3 个特殊标记IS_AUTHENTICATED_FULLYIS_AUTHENTICATED_REMEMBEREDorIS_AUTHENTICATED_ANONYMOUSLY和 SpEL 表达式开头的角色。但是您可以从 SpEL 表达式中调用 Spring bean,因此您应该考虑调用服务中的方法并在那里完成工作;语法将使用 @ 符号:

@Secured('@myService.doTheAdminChecks()')

并且该实现可以尽可能复杂,并且可以从Config.groovy和/或属性文件中读取信息,但带注释的代码不会因安全问题而混乱。

另一种选择是在注解中使用闭包;这是一项新功能,在 What's New 部分的 @Secured 部分进行了描述。

于 2014-12-08T00:41:07.290 回答