在阅读了一些文档之后,我对如何开始使用 shiro 插件有点模糊。我决定不使用 Nimble,因为它带有很少的表格和 UI 插件。
我用我自己的表设置了带有通配符领域的 shiro 插件。我可以使用基于权限(而不是基于角色)的访问控制,因为它可以很好地扩展。现在,它的步骤。
现在,
1. 什么时候通过过滤器使用访问控制?
2.是否有注入(inject) Controller 的闭包,我可以在其中定义操作的权限?我在某处阅读了有关每个 Controller 上的 accessControl 静态闭包的信息,但似乎没有记录。
3. 如何创建一个典型的访问控制场景,比如只有(某物、帖子等)的创建者才能删除它?一种可能性是根据用户 ID 创建和保存权限字符串。检查权限检索对象(帖子),获取用户ID并与主题进行比较..似乎有点复杂..有什么简单的实现吗?
多谢..
巴布。
最佳答案
1 when to use the access control security filter?
A. 当您希望将 Controller 操作的访问权限限制为经过身份验证的用户时,请使用 accessControl{true}。
B. 当您想要限制对 Controller 操作的访问时,使用 accessControl(),无论参数内容如何,基于权限“${controllerName}:${actionName}”。
C. 当您想根据参数内容限制操作时,例如仅删除您具有删除权限“${name}:${id}:delete”的域对象,您需要在 Controller 中显式检查 isPermitted。
3 How do I create a typical access control scenario like only the creator?
创建帖子时,我会向用户添加必要的权限,例如"post:${postId}:*"这样,权限属于用户和/或角色,而不是任意域对象,正如 Shiro 工作方式中所预期的那样。与文件系统权限相反,它属于文件和目录而不是用户。
关于Grails Shiro 插件 : confirming my understanding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2756227/