我正在使用LDAP插件和Spring Security插件。 LDAP插件提取登录用户所属的组。我的应用程序有两个角色admin
和normal
。我想通过属性文件使其可配置,而不是硬编码角色。这样而不是写作
@Secured(["ROLE_ADMINS"])
我可以写点像
@Secured(["role.admins"])
配置文件中的role.admins=ROLE_ADMINS
。
这样我可以使用相同的WAR文件并将其部署在多个客户端上,其中每个客户端都有自己的标准方法在ActiveDirectory中配置组名。
答案 0 :(得分:1)
你可以做到这一点,但我认为这是一个更好的选择。当前注释有点僵硬,仅支持以ROLE_
开头的角色,3个特殊标记IS_AUTHENTICATED_FULLY
,IS_AUTHENTICATED_REMEMBERED
或IS_AUTHENTICATED_ANONYMOUSLY
以及SpEL表达式。但是你可以从SpEL表达式调用Spring bean,所以你应该考虑在服务中调用一个方法并在那里完成工作;语法将使用@符号:
@Secured('@myService.doTheAdminChecks()')
并且该实现可能非常复杂,并且可以从Config.groovy
和/或属性文件中读取信息,但带注释的代码不会因安全问题而变得混乱。
另一种选择是在注释中使用闭包;这是一项新功能,在@Secured part of the What's New section。
中有所描述