首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户角色与使用apache的用户权限

用户角色与使用apache的用户权限
EN

Stack Overflow用户
提问于 2016-05-25 07:51:28
回答 1查看 706关注 0票数 0

我正在尝试使用apache对一些复杂的权限管理系统建模。

英语不是我的母语,我担心我可能遗漏了一些术语的微妙之处,如“角色”、“权限”、“权利”和“特权”。

例如,假设我希望创建一个管理资源的系统,例如位于建筑物内的打印机。DB保存哪台打印机位于哪个建筑物中的信息。该系统的用户应该能够重置打印机或打印到它。

很明显,一些用户将是“超级管理员”,并能够重置和打印到任何打印机(‘打印机:**’)-我想我们可以说,这些人有一个“超级管理员的角色”。

但是,如果应该允许某人重置特定建筑物中的打印机(“building :a:*”),该怎么办?“建筑管理”是一种(实际的)角色吗?还是说这只是一栋特定建筑的许可?您将如何使用apache对此进行建模?

n.b.

在标记这个q时,我添加了用户角色标签,它说:“用户角色是一组在系统上共享相同特权或权限的用户。使用这个标记来询问用户角色在特定的安全框架中如何工作,或者在您的程序中如何实现用户角色。”

我是否可以正确地假设,根据这个定义,不存在“建筑管理”这样的角色,因为作为A楼的行政人员,你没有获得与B楼管理员相同的权限吗?如果是这样的话,用什么正确的术语来描述“建筑物管理”呢?

EN

回答 1

Stack Overflow用户

发布于 2016-05-26 00:18:15

您考虑过在WildCardPermission格式中使用三个以上的令牌吗?

可以使用的令牌数量没有限制,所以这取决于您在应用程序中使用的方式。 - https://shiro.apache.org/static/1.2.4/apidocs/org/apache/shiro/authz/permission/WildcardPermission.html

与Apache示例和文档中常用的domain:action:instance语法不同,您可以添加另一个令牌来表示构建,例如printer:print,reset:*:buildingA

这种方案的缺点是,每当您在特定打印机上检查是否允许某个操作时,您现在还必须指定位置,尽管表示打印机实例的令牌可能已经唯一地标识了该打印机:

代码语言:javascript
复制
// let's say the role for buildingA-admin has permission of "printer:*:*:buildingA"

subject.isPermitted("printer:print:epson123:buildingA"); // returns true
subject.isPermitted("printer:print:epson123"); // returns false

根据应用程序域的不同,像buildingA:printer:print,reset:epson123这样的结构甚至可能更合适或更有用。

要回答有关用户角色的另一个问题,您可以正确地假设,如果您同时拥有buildingA-adminbuildingB-admin角色,那么它们是不同的用户角色,如果分配给它们的权限并不相同。

您可以设想Building Admin的一般用户角色,用于不同建筑物的所有管理员可能具有的权限,以避免在不同的特定于建筑物的管理角色之间重复这些权限。

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

https://stackoverflow.com/questions/37430932

复制
相关文章

相似问题

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