【发布时间】:2013-09-20 09:43:45
【问题描述】:
我正在努力弄清楚如何根据请求使用的 HTTP 方法进行基于角色的授权。我使用 HTTP 基本身份验证,根据用户角色和使用的 HTTP 方法,请求应该成功还是失败。
例子:
- 应始终允许对
http://localhost/rest/的 GET 请求,即使是未经身份验证的用户(匿名访问) - 只有在用户经过身份验证时才允许向
http://localhost/rest/(相同的资源!)发出 PUT 请求 - 只有当用户经过身份验证并且具有管理员角色时,才应允许对
http://localhost/rest/(相同资源!)的DELETE请求
我当前(无效)配置shiro.ini 的尝试如下所示:
/rest = authcBasic[PUT], roles[SERVICE_PROVIDER]
/rest = authcBasic[POST], roles[EXPERIMENTER]
/rest = authcBasic[DELETE], roles[ADMINISTRATOR]
/rest = authcBasic
更新
我刚刚找到 https://issues.apache.org/jira/browse/SHIRO-107 并将我的 shiro.ini 更新为
/rest/**:put = authcBasic, roles[SERVICE_PROVIDER]
/rest/**:post = authcBasic, roles[EXPERIMENTER]
/rest/**:delete = authcBasic, roles[ADMINISTRATOR]
/rest/** = authcBasic
但它仍然不起作用。似乎只有最后一条规则匹配。此外,提交评论似乎也表明这仅适用于基于权限的授权。基于角色的身份验证没有等效的实现吗?
【问题讨论】:
标签: rest basic-authentication shiro