1

如果用户具有权限user:edit:1并且我正在使用注释驱动@RequiresPermissions("user:edit"),为什么 shiro 会抛出异常?他们拥有的事实不应该暗示这种许可user:edit:1吗?如果我把@RequriesPermissions("user:edit:1")它工作正常,但在操作的上下文中我不知道 1 是什么,所以稍后将在方法中检查,但如果他们不这样做,我想完全避免进入该方法完全有user:edit权限。

4

2 回答 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 回答