用thinkphp5如何实现基于角色的访问控制

  介绍

小编给大家分享一下用thinkphp5如何实现基于角色的访问控制,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

用thinkphp5如何实现基于角色的访问控制

这个是新创建库的测试

用thinkphp5如何实现基于角色的访问控制

管理员表

这个是新创建的管理表,这个表是用户表是管理后台的用户。

这个表的issuper这个字段代表是否是超级管理员,这个超级管理员可以管理全部的角色和执行所有的权限。

admin_role_id这个字段主要描述的是除了超级管理员之外的管理员所对应的角色表id下面我们会给出角色表。

用thinkphp5如何实现基于角色的访问控制

角色表

这个表是角色表,他的主id和管理员的admin_role_id可以分出管理员都处于什么角色管理。

用thinkphp5如何实现基于角色的访问控制

权限表

这个表是权限表,他的主id所对应的是角色表的role_auth_id可以得出不同的角色有着不同的权限可以执行。

& lt; php ?   名称空间的应用程序\ admin \控制器;   使用认为\控制器;   使用Url认为\;   使用认为\请求;   使用认为\会话;   使用app \ admin \模型\ AuthModel身份验证   使用app \ admin \ \作为RoleModel模型      类索引扩展CommonController   {   公共美元的作用;   公共美元身份验证;   公共美元视图;   公共函数__construct ()   {   $ this→角色=new RoleModel ()   $ this→auth=new AuthModel ()   $ this→视图=新视图();   }      publci身份验证()函数   {//角色id;   $ admin_id=sesison (& # 39; admin_id& # 39;);   $ admin_name=会话(& # 39;admin_name& # 39;);      resAdmin=美元这→管理→在((& # 39;admin_id& # 39;=祝辞;$ admin_id])→选择();   如果($ resAdmin [0]→issuper==1) {//超级管理员拥有全部权限;//一级权限;   authA=这→美元auth→在((& # 39;auth_level& # 39;]=祝辞0)→选择();//二级权限   authB=这→美元auth→在((& # 39;auth_level& # 39;=祝辞1])→选择();   其他}{//权限id;   role_auth_ids=美元这→→角色,((& # 39;role_id& # 39;=祝辞;$ admin_role_id])→选择();   authA=这→美元auth→(& # 39; auth_level& # 39;,0)→(& # 39;auth_id& # 39;上的,& # 39;# 39;美元,role_auth_ids)→选择();   authB=这→美元auth→(& # 39; auth_level& # 39;,1)→(& # 39;auth_id& # 39;上的,& # 39;# 39;美元,role_auth_ids)→选择();   }      $ auth=阵列(& # 39;authA& # 39;=祝辞authA美元,& # 39;authB& # 39;=祝辞authB美元);   $ this→重定向(& # 39;管理/& # 39;。美元auth [& # 39; authA& # 39;] [0]→auth_c强生# 39;/& # 39;。美元auth [& # 39; authA& # 39;] [0]→auth_a);      }      公共函数leftnav ()   {   $ admin_id=会话(& # 39;admin_id& # 39;);   $ amin_name=会话(& # 39;admin_name& # 39;);//角色id;   resAdmin=美元这→管理→在((& # 39;admin_id& # 39;]=祝辞admin_id美元)→选择();   admin_role_id=resAdmin美元[0]→admin_role_id美元;   如果($ resAdmin [0]→issuper==1) {//超级管理员超级拥有全部权限;//一级权限;   authA=这→美元auth→在((& # 39;auth_level& # 39;=祝辞0])→选择();//二级权限;   authB=这→美元auth→在((& # 39;auth_level& # 39;=祝辞1])→选择();   其他}{//权限id   role_auth_ids=美元这→→角色,((& # 39;role_id& # 39;=祝辞;$ admin_role_id])→选择();   role_auth_ids=role_auth_ids美元[0]→role_auth_ids;      authA=这→美元auth→(& # 39; auth_level& # 39;,0)→(& # 39;auth_id& # 39;上的,& # 39;# 39;美元,role_auth_ids)→选择();   authB=这→美元auth→(& # 39; auth_level& # 39;,1)→(& # 39;auth_id& # 39;上的,& # 39;# 39;美元,role_aut_ids)→选择();   }      $ auth=阵列(& # 39;authA& # 39;=祝辞authA美元,& # 39;authB& # 39;=祝辞authB美元);   美元这个→视图→分配(& # 39;authA& # 39;美元,身份验证(& # 39;authA& # 39;]);   美元这个→视图→分配(& # 39;authB& # 39;美元,身份验证(& # 39;authB& # 39;]);   }         }

用thinkphp5如何实现基于角色的访问控制