首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用apache shiro进行权限控制

使用apache shiro进行权限控制
EN

Stack Overflow用户
提问于 2013-06-19 17:04:20
回答 2查看 1.9K关注 0票数 1

我是新手,几乎60%的教程都是在apache shiro页面上读到的。

这是一个很棒的框架,但是我想知道它是否能满足我的需求。

我对基于权限的身份验证很感兴趣。

例如,为了确保用户是否有删除资源的权限,我们可以使用以下命令:

代码语言:javascript
复制
currentUser.isPermitted( "resource:delete" );

但是在我们的应用程序中,即使用户有删除资源的权限,也只能删除部分指定的资源,而不是所有的资源。

例如(只是一个例子),资源有一个名为createdby的文件来记录创建这个资源的人。

现在,只有拥有resouce:delete权限的用户才能删除自己创建的资源。

实际上,用户(已经通过认证,拥有delete权限)可以删除的资源,会有更多的约束来计算。

现在如何让shiro在这个套装中工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-19 17:19:55

从某种程度上说,我已经探索了Shiro,我不认为它提供了定制检查的灵活性。它基本上是基于配置文件中定义的角色和权限来工作的。

对于此功能,我建议您通过在查询获取级别进行此检查,仅显示允许用户删除的那些记录。(或者)如果登录的用户与创建者相同,则在UI级别添加条件而不显示删除按钮。这只是一个建议。

票数 0
EN

Stack Overflow用户

发布于 2014-09-07 03:31:55

您可以在Shiro中做到这一点,但您必须编写一些代码。创建授权程序的子类并将其注入到安全管理器中,或者创建某个领域类的子类,如JdbcRealm。然后重写isPermitted方法。这将需要访问您的权限模型,例如数据库表或NoSQL数据库中的文档。

您对isPermitted的调用需要指定要删除的资源,以便您可以在被覆盖的方法中查找它。

如果覆盖AuthorizingRealm子类中的isPermitted方法,您将可以访问登录用户的主体和管理员用户的角色:这为您提供了相当大的灵活性,因为您可以说: user () Fred with Roles: Manager,。然后,您的权限模型可以决定Fred、管理员或管理员是否可以在指定的资源上执行任务。

希望这能给你一些启发。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17187181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档