如果用户具有权限user:edit:1
并且我正在使用注释驱动@RequiresPermissions("user:edit")
,为什么 shiro 会抛出异常?他们拥有的事实不应该暗示这种许可user:edit:1
吗?如果我把@RequriesPermissions("user:edit:1")
它工作正常,但在操作的上下文中我不知道 1 是什么,所以稍后将在方法中检查,但如果他们不这样做,我想完全避免进入该方法完全有user:edit
权限。
问问题
2226 次
2 回答
3
我不认为,ascandrolis 的答案是正确的,因为 Shiro 文档指出:
但是,对于运行时检查,以下内容不太理想:
if (SecurityUtils.getSubject().isPermitted("printer:print")) {
//print the document
}
为什么?因为第二个示例说“您必须能够打印到任何打印机才能执行以下代码块”。但请记住,“printer:print”等价于“printer:print:*”!
( Shiro 文档)
So@RequiresPermissions("user:edit:*")
的含义与 相同@RequiresPermissions("user:edit")
,即主体需要能够编辑任何用户。
于 2012-02-10T18:32:07.367 回答
0
"user:edit"
暗示"user:edit:1"
但不是相反。您可以继续使用,然后在您的方法中@RequiresPermissions("user:edit")
检查“1” 。您也可以使用通配符@RequiresPermissions("user:edit:*")
,这是完全相同的,但我认为它更清楚。
于 2011-03-12T10:13:57.363 回答