春季安全 - 一个积极的角色

时间:2011-05-02 06:56:58

标签: security grails spring-security

想象一下,用户可以在系统中拥有一个或多个角色。后 登录用户必须选择这些角色。仅此时此刻 应该通过弹簧安全检查这个选定的角色。

e.g。用户有ROLE_A,ROLE_B

requestmaps:

/ book / ** - > ROLE_A,ROLE_B / author / ** - >角色A

正常行为是用户可以访问所有定义的 动作。在我的特殊情况下,用户将选择ROLE_A然后获取 仅访问/ author / **操作。换句话说,有可能 在安全上下文中定义一个活动角色,以便春天 安全性会根据这个角色执行安全检查吗?

1 个答案:

答案 0 :(得分:2)

虽然我建议避免使用这种方法,但从最终用户的角度来看,我理解有时会有一些不受控制的要求。因此,请注意,您为Spring Security定义的Person对象应包含以下内容:

Set<Role> getAuthorities() {
   PersonRole.findAllByPerson(this).collect { it.role } as Set
}

如果您在某处指定了所选角色的属性,只需修改上述方法即可返回该角色。