我有记录(联系人,地址等),以下任何一个都可以访问(包括组合,例如2组和4个人):
实现这一目标的数据库结构是什么?基本上在我的应用程序中,我需要能够限制用户XYZ何时登录,以便仅向他显示作为个人,组成员"可见"的记录,或者因为它们对每个人都可见.
基本上我正在寻找一种有效存储这些关系的方法.它应该很快,因为每当有人看到任何东西时我都会关注这些关系.
我真的很感激有关如何做到这一点的一些提示!
谢谢!
编辑:我正在使用SQL Server 2008网络版.
我正在使用CodeIgniter中的一个应用程序,我希望在应用程序中有几个对象的管理页面,我想知道将这些应用程序放入MVC结构的更好方法是什么.
想法1: 
 在每个控制器中,有一个管理功能,并将我想要的所有管理页面添加到该功能中.示例网址:domain.com/articles/admin
想法2创建 
 一个新的管理控制器,它必须引用许多不同的模型,并将所有管理页面放在那里.示例网址:domain.com/admin/articles
哪种方式会更好?
编辑以供说明:通过管理功能,我的意思是能够对任何对象执行基本的CRUD操作,并能够显示所有所述对象的列表.
最近我一直在考虑在我的应用程序中使用的最佳访问控制模型.我一直在阅读RBAC并且角色概念很好(特别是如果你有大量不同的权限),但是,我不确定它对分层用户管理的适用性如下:
每个用户都属于一个或多个组.组被组织成树(如目录结构).可以为组和用户分配权限(或角色,如果我们正在谈论RBAC)并且应该存在某种类型的继承(即用户和组继承其所属组的权限)和覆盖功能.组本身的目的不仅是权限管理 - 它们还会在应用程序中有其他用途.
我想,如果没有角色使用权限("角色"是RBAC术语中的权限集合),进一步设计和实现上述所有内容都不会太成问题,因为权限非常精细,而角色更加单一.在组/用户级别实现权限继承/覆盖不会太困难.对角色执行相同操作可能会更棘手,但另一方面,普通用户更容易理解角色.
现在,我自己更倾向于"仅限权限"模式,因为:
但是,如果我看到一个逻辑且易于理解的基于角色的模型,该模型比"仅权限"模型具有优势,我会认真地看一下它.是否有任何明确定义的RBAC模型(论文,实现等)可以应用/适应上述要求(我已经搜索了一段时间了,但我发现那些限制太多或者没有将层级用户管理纳入会计?你对此事的总体看法是什么?RBAC在这种情况下是否值得?
我在app的admin部分使用pundit进行访问控制.我有一个仪表板控制器,如下所示:
class Admin::DashboardsController < AdminController
  def index
    @total_revenue = Order.total_revenue
    authorize :dashboards, :index?
  end
  ...
end
和一个看起来像这样的政策:
class DashboardPolicy < Struct.new(:user, :dashboard)
  def index?
    true
  end
end
当我试图访问时,/admin/dashboards/我得到一个Pundit::NotDefinedError, unable to find policy SymbolPolicy for dashboards
我也试过命名空间策略并得到了同样的错误.
在我用javascript(Node.js)编写的DDD应用程序中,我对授权通用子域的实现感到磕磕绊绊.我查看了如何实现这一点的RBAC/ACL授权模型,但它们似乎没有我需要的每实例权限.
据我所知,RBAC具有基于角色的授权.用户被分配到角色.角色是分层的并且继承权限.角色可以拥有多个权限.权限允许在资源上执行命令.
但是,正如RBAC所定义的那样,资源是通用的,如"帖子","评论","书籍"等.它们不是特定于实例的(如Post(id:9283984)).例如,在RBAC中无法定义只有创建Post的用户才能编辑它.似乎无法将角色"Admin"分配给给定"Post(id:2398493)"上的"User(id:(8290321)"
定义具有执行修改其他人在特定资源上的角色的命令的权限的角色变得更加复杂.
我的申请要求是:
该User谁发布的CreateLedger命令被自动分配为Admin这Ledger.他只能分配给其他人作为Managers或Collaborators或Viewers横木的他Admin的.他也可以撤销这些角色.Managers被允许来管理Accounts的Ledger.Collaborators允许Transactions对此进行编辑Ledger,并且Viewers只能查看数据(只读).一个Admin可以分配Admin角色的书,他Admin的另一个User.
我最初的想法是,为了使用户能够管理资源上的用户角色,需要在
user(id:X) -> role(name:Z) -> permissions -> resource(id:Y) -> commands
但在RBAC中,它只能分配
user(id:X) -> role(name:Z) -> permissions -> resource(name:"Ledger") -> commands
然后,为了克服RBAC的这种限制,我想到了用它们的id命名资源
user(id:X) -> role(name:Z) -> permissions -> resource(name:"Ledger:39823847") -> commands
但这似乎是错误的.我没有看到使用资源名称作为实际实例的映射的RBAC的任何示例.
我用错了锤子?我看错了吗?是否有其他一些更适合此任务的访问控制模型?或者这是要走的路?如果有人能指出我正确的方向,我将不胜感激.
谢谢您的帮助
背景:
我有一组模型,包括用户和其他各种模型,其中一些模型包含对用户的引用.我通过Graffiti生成的GraphQL API公开这些模型以进行查询,使用graffiti-mongoose适配器为Mongo数据库提供支持.我当前的REST API(我正在迁移到GraphQL)使用JSON Web令牌对用户进行身份验证,并在服务器端具有一些自定义权限逻辑来处理访问控制.
问题:
我想基于当前登录用户限制对GraphQL中对象的访问.某些模型应该可以通过未经身份验证的调用进行读取.大多数其他模型只能由创建它们的用户访问.通过Graffiti生成的API管理对象访问控制的最佳方法是什么?
一般来说,GraphQL是否有良好的访问控制模式?特别是,Graffiti有没有很好的例子或库?
笔记:
我知道钩子的前后挂钩已经实现了涂鸦 - 猫鼬,并且它们可以用来进行基本的二进制检查以进行身份验证.我想看看如何在GraphQL API中使用更详细的访问控制逻辑.将来,我们希望支持管理员等可以访问由特定用户组创建的模型实例的用户(例如,其附属关系包含管理员用户的用户).
我是使用PHP和MySQL创建Web应用程序的团队的一员.该应用程序将具有多个具有不同角色的用户.该应用程序还将以地理分布的方式使用.因此,我们需要创建一个在以下两个级别运行的访问控制系统:
我需要帮助设计一个可以处理这两种访问控制的系统.点号.1似乎很简单.但是,如果不对SQL查询中的信息进行硬编码,我完全不知道如何进行第2点.
任何帮助,将不胜感激.
提前致谢
维纳亚克
php permissions database-design access-control database-permissions
我一直在思考我即将开始开发的网络应用程序,并想知道我的常用方法是否可以改进.
我在去年的一些应用程序,我创建的角色(如表(见下文)CREATE POST,EDIT POST等),每个都应用了一个位域,所以我可以简单地分配用户的某些权利的登记和检查他们以后(如$user->hasRight(CREATE_POST)).
我想知道是否有更好的方法.当权利没有明确地链接到用户时,我肯定会感到困惑(我可以有一个表,其中每个权利都是一个布尔列,但这听起来只是一个很小的改进) - 如果我改变一些,会发生什么?
我不打算使用标准库(应用程序本身对我来说是一种学习体验:使用postgresql,git等)虽然我很乐意从他们那里获取灵感来构建我自己的 - 所以如果有什么特别的你认为我应该看看请说出来:)
在我正在开发的一个项目中有一个场景,其中有一个中央数据库,由组织内的各个分支和子单元访问.除了我知道如何解决的基于角色的权利(如运营商,管理员,审批人等)之外,还需要在组织单位级别过滤数据.
例如,请参阅下面描述的组织结构:

在这种情况下,任何在HQ级别工作的用户都可以访问用户有权访问的那些屏幕中的分支机构上的所有数据(基于角色).但是,分支1中的任何人只能看到1.1,1.2和1.3单元的数据.分支2也是如此.当我们将其推广到下一个级别时,Unit 1.1中的用户只能访问Unit 1.1的数据,而不能访问另一个的数据.
那么,使用域对象安全性或Spring Security中的任何其他机制可以实现这种访问控制吗?
我正在探索在Hibernate中使用拦截器进行必要过滤的可能性.在这方面的任何帮助也会有用吗?
我读这个有关自定义类型的QT文档页面,并声明如下:
如果要将类型集成到元对象系统中,则默认构造函数,复制构造函数和析构函数都是必需的,并且必须是公共的.
假设我有一个需要使用一些必需参数构建的对象,因为没有必要使用默认构造函数构建,例如:
struct IntPair
{    
    IntPair(int first, int second);
    ~IntPair();
};
为了使它在QT元对象系统中可用,正如doc所述,它需要默认的构造函数.但实际上,在没有IntPair一对整数的情况下给出构建对象的机会是没有意义的(对于丑陋的例子而言).
有没有办法实现这一点而不实现默认构造函数?我正在考虑我的对象和QT元对象系统之间的某种友谊 ......
基本上,我无法理解为什么需要默认构造函数.
access-control ×10
php ×3
rbac ×2
acl ×1
c++ ×1
codeigniter ×1
constructor ×1
friend ×1
graphql ×1
hibernate ×1
node.js ×1
permissions ×1
pundit ×1
qt ×1