我正在努力弄清楚如何根据请求使用的 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
但它仍然不起作用。似乎只有最后一条规则匹配。此外,提交评论似乎也表明这仅适用于基于权限的授权。基于角色的身份验证没有等效的实现吗?