2011-05-02 69 views
1

想象一下,用户可以在系统中拥有一个或多个角色。在 登录后,用户必须选择这些角色。此时只有 这个选择的角色应该由spring security检查。弹簧安全 - 一个主动角色

例如用户ROLE_A,ROLE_B

requestmaps:

/电子书/ **

- > ROLE_A,ROLE_B /作家/ ** - >作用

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

回答

2

虽然我建议避免这种方法,但从最终用户的角度来看,我了解有时候有些需求超出了您的控制范围。因此,随着中说,请注意,您已经为春季安全定义的Person对象使用应包含以下内容:

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

如果定义某处属性,指定你选择的角色,仅修改上面的方法,只返回该角色。

+0

感谢您的解决方案!我的方法是在登录后修改用户密码类中的权限集合,以便此集合中只存在一个角色。用户也可以切换角色。此时你必须再次修改这个集合。 – hitty5 2011-05-03 07:58:26