我是新手,几乎60%的教程都是在apache shiro页面上读到的。
这是一个很棒的框架,但是我想知道它是否能满足我的需求。
我对基于权限的身份验证很感兴趣。
例如,为了确保用户是否有删除资源的权限,我们可以使用以下命令:
currentUser.isPermitted( "resource:delete" );但是在我们的应用程序中,即使用户有删除资源的权限,也只能删除部分指定的资源,而不是所有的资源。
例如(只是一个例子),资源有一个名为createdby的文件来记录创建这个资源的人。
现在,只有拥有resouce:delete权限的用户才能删除自己创建的资源。
实际上,用户(已经通过认证,拥有delete权限)可以删除的资源,会有更多的约束来计算。
现在如何让shiro在这个套装中工作呢?
发布于 2013-06-19 17:19:55
从某种程度上说,我已经探索了Shiro,我不认为它提供了定制检查的灵活性。它基本上是基于配置文件中定义的角色和权限来工作的。
对于此功能,我建议您通过在查询获取级别进行此检查,仅显示允许用户删除的那些记录。(或者)如果登录的用户与创建者相同,则在UI级别添加条件而不显示删除按钮。这只是一个建议。
发布于 2014-09-07 03:31:55
您可以在Shiro中做到这一点,但您必须编写一些代码。创建授权程序的子类并将其注入到安全管理器中,或者创建某个领域类的子类,如JdbcRealm。然后重写isPermitted方法。这将需要访问您的权限模型,例如数据库表或NoSQL数据库中的文档。
您对isPermitted的调用需要指定要删除的资源,以便您可以在被覆盖的方法中查找它。
如果覆盖AuthorizingRealm子类中的isPermitted方法,您将可以访问登录用户的主体和管理员用户的角色:这为您提供了相当大的灵活性,因为您可以说: user () Fred with Roles: Manager,。然后,您的权限模型可以决定Fred、管理员或管理员是否可以在指定的资源上执行任务。
希望这能给你一些启发。
https://stackoverflow.com/questions/17187181
复制相似问题