2

在阅读了一些文档之后,我对如何开始使用 shiro 插件有点模糊。我决定不使用 Nimble,因为它带有很少的表格和 UI 插件。

我用我自己的表设置了带有通配符领域的 shiro 插件。我可以使用基于权限(而不是基于角色)的访问控制,因为它可以很好地扩展。现在,它的步骤。

  1. 将权限字符串分配给主题,并将其保存在数据库中
  2. 通过 isPermitted、hasPermission(或 GSP 中的相关标签)检查权限。

现在,
1.什么时候通过过滤器使用访问控制?
2. 是否有一个闭包注入到控制器中,我可以在其中定义操作的权限?我在某处阅读了有关每个控制器上的 accessControl 静态闭包的信息,但似乎没有记录。
3. 如何创建一个典型的访问控制场景,比如只有(某物、帖子等)的创建者才能删除它?一种可能性是根据用户 ID 创建和保存权限字符串。检查权限检索对象(帖子),获取用户ID并与主题进行比较..似乎有点复杂..有什么简单的实现吗?

非常感谢..巴布。

4

1 回答 1

1

1 什么时候使用门禁安全过滤器?

A. 当您希望将控制器操作的访问权限限制为经过身份验证的用户时,请使用 accessControl{true}。

B. 当您想要限制对控制器操作的访问时,使用 accessControl(),无论参数内容如何,​​基于权限“${controllerName}:${actionName}”。

C. 当你想根据参数内容限制动作时,例如只删除一个你有删除权限的域对象“${name}:${id}:delete”,你需要在控制器中显式检查isPermitted。

3 如何创建一个典型的访问控制场景,比如只有创建者?

我会在创建帖子时向用户添加必要的权限,例如“post:${postId}:*”这样权限属于用户和/或角色,而不是任意域对象,如意在 Shiro 的工作方式。与文件系统权限相反,它属于文件和目录而不是用户。

于 2011-04-01T13:47:16.557 回答