有没有办法在Spring Security插件的属性文件中定义角色而不是硬编码?

时间:2014-12-08 00:27:09

标签: grails spring-security spring-security-ldap

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

@Secured(["ROLE_ADMINS"])

我可以写点像

@Secured(["role.admins"])

配置文件中的role.admins=ROLE_ADMINS

这样我可以使用相同的WAR文件并将其部署在多个客户端上,其中每个客户端都有自己的标准方法在ActiveDirectory中配置组名。

1 个答案:

答案 0 :(得分:1)

你可以做到这一点,但我认为这是一个更好的选择。当前注释有点僵硬,仅支持以ROLE_开头的角色,3个特殊标记IS_AUTHENTICATED_FULLYIS_AUTHENTICATED_REMEMBEREDIS_AUTHENTICATED_ANONYMOUSLY以及SpEL表达式。但是你可以从SpEL表达式调用Spring bean,所以你应该考虑在服务中调用一个方法并在那里完成工作;语法将使用@符号:

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

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

另一种选择是在注释中使用闭包;这是一项新功能,在@Secured part of the What's New section

中有所描述