最近学习laravel,对laravel自带的授权系统比较困惑,想问一下。
知识概览:
访问控制的模型:
主要的访问控制类型有3种模型:自主访问控制(DAC)、强制访问控制(MAC)和基于角色访问控制(RBAC)。1、自主访问控制 自主访问控制(Discretionary Access
Control,DAC)是一种接入控制服务,通过执行基于系统实体身份及其到系统资源的接入授权。包括在文件,文件夹和共享资源中设置许可。用户有权对自身所创建的文件、数据表等访问对象进行访问,并可将其访问权授予其他用户或收回其访问权限。允许访问对象的属主制定针对该对象访问的控制策略,通常,可通过访问控制列表来限定针对客体可执行的操作。
2、强制访问控制
强制访问控制(MAC)是系统强制主体服从访问控制策略。是由系统对用户所创建的对象,按照规定的规则控制用户权限及操作对象的访问。主要特征是对所有主体及其所控制的进程、文件、段、设备等客体实施强制访问控制。
3、基于角色的访问控制
角色(Role)是一定数量的权限的集合。指完成一项任务必须访问的资源及相应操作权限的集合。角色作为一个用户与权限的代理层,表示为权限和用户的关系,所有的授权应该给予角色而不是直接给用户或用户组。RBAC后来还变成了,RBAC0,RBAC1,RBAC2等。
4、基于属性的访问控制ABAC
5、基于策略的访问控制PBAC等
问题:
1.社交类网站如人人、知乎、twitter等等的授权系统更偏向使用哪种 授权模型?
2.电商类如天猫、蘑菇街等等的授权系统更偏向使用哪种 授权模型?
3.大部分框架自带了Authorization授权系统(大多基于ACL技术的授权系统),但大多不是RBAC模型的系统。如果我直接使用框架自带的授权系统如Laravel5.1.11里面的(Gate/Policy等等-基于acl的授权系统),着手做社交类和电商类应用,我该解决哪些问题呢?
4.使用3.里面提到的"....自带的授权系统", 如何解决网站的后台管理的授权部分的设计问题? 大部分应用,大致分为 frontend(用户,公开界面)和 backend(admin管理)和 superadmin(root站点,超级管理员)这几个不同的角色的权限问题呢?