权限控制

Posted KoKo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了权限控制相关的知识,希望对你有一定的参考价值。

RBAC(role  based  access  control),基于角色的访问控制。

比如:

系统角色包括 :部门经理、总经理。。(角色针对用户来划分)

 

系统代码中实现:

//如果该user是部门经理则可以访问if中的代码

if(user.hasRole(‘部门经理‘)){

           //系统资源内容

           //用户报表查看

}

 

问题:

角色针对人划分的,人作为用户在系统中属于活动内容,如果该 角色可以访问的资源出现变更,需要修改你的代码了,比如:需要变更为部门经理和总经理都可以进行用户报表查看,代码改为:

 

if(user.hasRole(‘部门经理‘) || user.hasRole(‘总经理‘)  ){

           //系统资源内容

           //用户报表查看

}

 

基于角色的访问控制是不利于系统维护(可扩展性不强)。


 

RBAC(Resource  based  access  control),基于资源的访问控制。

 

资源在系统中是不变的,比如资源有:类中的方法,页面中的按钮。

 

对资源的访问需要具有permission权限,代码可以写为:

 

if(user.hasPermission (‘用户报表查看(权限标识符)‘)){

           //系统资源内容

           //用户报表查看

}

 

上边的方法就可以解决用户角色变更不用修改上边权限控制的代码。

 

如果需要变更权限只需要在分配权限模块去操作,给部门经理或总经理增或删除权限。

 

 

建议使用基于资源的访问控制实现权限管理。

 

以上是关于权限控制的主要内容,如果未能解决你的问题,请参考以下文章

权限控制RBAC模型

vue 按钮 权限控制

fastDFS能做文件访问权限控制吗?

ThinkPHP中RBAC权限控制求助

Vue前端用户权限控制大全

前端权限控制