【问题标题】:Error configuring the requestmap in spring security core for grails在spring security core中为grails配置requestmap时出错
【发布时间】:2012-06-26 23:10:47
【问题描述】:

在我的系统中,我为用户分配了许多角色(现在假设为 3 个ROLE_ADMIN, ROLE_USER, ROLE_SERVICES)。在我的一个控制器中(假设SearchController 我们有三个动作serviceIndex{}, userIndex{} and adminIndex{}),我希望任何角色的用户都能够访问其中两个动作(前两个)。对于最后的操作,我想限制针对单一角色类型的用户(比如说 ROLE_USER)的操作,但允许访问其他角色的用户(即 ROLE_ADMIN, ROLE_SERVICE。我的 requestmap 表中有类似以下内容。

config_attribute ---------------------------------------------- ------------->网址
ROLE_ADMIN,ROLE_SERVICE,ROLE_USER ------------------------------> /search/serviceIndex
ROLE_ADMIN,ROLE_SERVICE,ROLE_USER-------------------------------------------> /search/userIndex
ROLE_ADMIN,ROLE_SERVICE -----------------------------------------> /search/adminIndex

由于第三条规则规定 ROLE_USER 无法访问 url '/search/adminIndex',因此具有该角色的用户应该被拒绝访问该 url 的授权。但是,用户仍然可以访问该网址。什么是正确的配置。我确实尝试过/search/adminIndex/** 之类的东西,但这也不起作用。附带说明一下,所有 url 都不会有后缀,但如果用户操纵 url,比如添加像 /search/userIndex/56a 这样的后缀,我仍然想阻止访问。

问候, 迪普斯

【问题讨论】:

    标签: grails spring-security grails-plugin


    【解决方案1】:

    由于插件会遍历规则并应用与当前 URL 匹配的第一个规则,因此我会先设置 adminIndex,然后再设置其他任何内容。

    ROLE_ADMIN,ROLE_SERVICE            /search/adminIndex
    ROLE_ADMIN,ROLE_SERVICE,ROLE_USER  /search/**
    

    【讨论】:

    • 尽管您可能是对的,但这种逻辑似乎有缺陷,因为每个 URL 都不同。我真的不明白为什么 OP 当前的配置不应该工作。
    • 一个原因可能是其他未显示的规则在粘贴任何规则之前匹配。在那种情况下,我的回答也是错误的。
    猜你喜欢
    • 2015-12-31
    • 2014-10-06
    • 2015-03-20
    • 2014-10-15
    • 2014-02-14
    • 2015-04-22
    • 2019-05-09
    • 2012-07-26
    • 1970-01-01
    相关资源
    最近更新 更多