python – 设计权限系统的最佳实践
我目前正在开发一个使用Pyramid的小型Python网站. PermissionCollection中: > permissionCollectionId – PrimaryKey 和权限表: > permissionId – PrimaryKey 我将为源中硬编码的每个可能关系定义标准PermissionCollections,如果用户,课程,教师……具有特殊权限,我将创建一个新的PermissionCollection并向其添加权限. 我对网络编程很陌生,不知道这种方法是否有用.或者,如果这样的事情甚至存在.我认为金字塔ACL不适合这项任务,是吗? 最佳答案
不确定你是否已经阅读过它,但金字塔确实带有一个非常好的权限系统.使用ACL进行授权.
如何处理它,它真的只取决于你… (object_id,允许/拒绝,谁?(组,用户ID),权限,订单) > object_id是数据库中记录的唯一ID 例如
即使是管理员,此示例也总是拒绝查看…一旦金字塔找到告诉您是否可以看到记录的内容,它会自动停止搜索
这将允许每个管理员查看,但不允许其他任何人.这就是为什么你必须记住你的ACE的顺序. 有趣的部分实际上在这里.这一切都很好.您已将acl映射到数据中的记录.当您加载例如页面时…您将必须加载acl并将其设置在您的对象中.
如果您有数据树.你甚至不能设置acls. 例如,您有一个看起来像这样的网站
当你访问page1时,它将检查acl是否找不到它,如果父有acl它将检查父,它将检查它的权限,如果不是,它将检查它的父亲,直到你到达根.如果它找不到权限,我不确定会发生什么…我猜它会给你一个禁止的错误或谓词错误.它无法找到合适的视图. 也就是说,为了完成这项工作,你必须使位置感知对象知道他们的父母. 但是你为什么要这么做呢? 您可以为任何对象获取acl,并且可以对谁可以监视数据库中的每个对象进行非常精细的控制.您也可以在没有数据库的情况下将acl直接放在类对象中. 只要你的acl在属性acl金字塔中就能用它做一些事情.如何得到它并不重要. 看一下这个 http://pyramid.readthedocs.org/en/1.3-branch/tutorials/wiki/authorization.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |