2010-05-03 78 views
2

在阅读少量文档后,我对如何开始使用shiro插件有点模糊。我决定不使用Nimble,因为它有少量表格和UI插件。Grails Shiro插件:确认我的理解

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

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

现在,
1.何时使用通过过滤器的访问控制?
2.是否有一个注入到控制器中的闭包,我可以定义其中的动作的权限?我读了关于每个控制器上的accessControl静态关闭的地方,但似乎没有记录。
3.如何创建一个典型的访问控制场景,例如只有(东西,帖子等)的创建者可以删除它?一种可能性是基于用户标识符创建和保持许可字符串。检查权限检索对象(后),获得用户ID和主体比较..似乎有点复杂..任何简单的实施?

非常感谢.. 巴布。

+0

我再次看过Nimble,看起来它并不是所有功能的中间环节。看起来它们是核心和社交功能的分歧..需要进一步探索..一个挑战是将风格融入我的应用... – bsr 2010-05-03 07:07:05

回答

1

1什么时候使用访问控制安全过滤器?

A.当您想限制访问控制器操作给认证用户时,使用accessControl {true}。

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

C.如果您想限制基于参数内容的操作,例如只删除一个你有删除权限“$ {name}:$ {id}:delete”的域对象,你需要在控制器中明确地检查isPermitted。

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

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