【问题标题】:spring security - one active rolespring security - 一个积极的角色
【发布时间】:2011-08-16 19:03:24
【问题描述】:

假设用户可以在系统中拥有一个或多个角色。后 登录用户必须选择这些角色。仅在此时 这个选定的角色应该由 spring security 检查。

例如用户拥有 ROLE_A、ROLE_B

请求图:

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

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

【问题讨论】:

    标签: security grails spring-security


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的解决方案!我的方法是在登录后修改用户详细类中的权限集合,以便该集合中只存在一个角色。用户也可以切换角色。此时您必须再次修改此集合。
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 2011-08-02
    相关资源
    最近更新 更多