在Spring的Spring安全核心中配置请求映射时出错

时间:2012-06-25 16:53:11

标签: grails spring-security grails-plugin

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

config_attribute ---------------------------------------------- -------------> URL
   ROLE_ADMIN,ROLE_SERVICE,ROLE_USER ------------------------------> /搜索/ serviceIndex
   ROLE_ADMIN,ROLE_SERVICE,ROLE_USER -------------------------------> /搜索/ userIndex
   ROLE_ADMIN,ROLE_SERVICE -----------------------------------------> /搜索/ adminIndex

由于第三条规则规定ROLE_USER无法访问url'/ search / adminIndex',因此具有该角色的用户应该被拒绝访问该URL的授权。但是,用户仍然可以访问该URL。什么是正确的配置。我确实试过像/search/adminIndex/**这样的东西,但这也不起作用。另外,没有一个网址会有后缀,但如果用户操纵网址,我仍然希望阻止访问,例如添加/search/userIndex/56a等后缀,以防万一。

此致 dipess

1 个答案:

答案 0 :(得分:1)

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

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