介绍
这篇文章将为大家详细讲解有关如何在Laravel5.1框架中使用ACL权限控制系统,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
<强> 1。创建角色与权限表强>
使用命令行创建角色与权限表:
php artisan : migration create_permissions_and_roles ——创建=
之权限后打开刚刚创建的文件,填入下面的代码:
public function 了() { 模式:创建(& # 39;角色# 39;,,function (Blueprint $表),{ 表→美元增量(& # 39;id # 39;); 表→美元字符串(& # 39;名字# 39;); 表→美元字符串(& # 39;标签# 39;); 表→美元字符串(& # 39;描述# 39;)→nullable (); 表→美元时间戳(); }); 模式:创建(& # 39;权限# 39;,,function (Blueprint $表),{ 表→美元增量(& # 39;id # 39;); 表→美元字符串(& # 39;名字# 39;); 表→美元字符串(& # 39;标签# 39;); 表→美元字符串(& # 39;描述# 39;)→nullable (); 表→美元时间戳(); }); 模式:创建(& # 39;permission_role& # 39;,, function (Blueprint $表),{ 表→美元整数(& # 39;permission_id& # 39;)→无符号(); 表→美元整数(& # 39;role_id& # 39;)→无符号(); 表→美元外国(& # 39;permission_id& # 39;) →引用(& # 39;id # 39;) →(& # 39;权限# 39;) →onDelete(& # 39;级联# 39;); 表→美元外国(& # 39;role_id& # 39;) →引用(& # 39;id # 39;) →(& # 39;角色# 39;) →onDelete(& # 39;级联# 39;); 美元表→主([& # 39;permission_id& # 39;,, & # 39; role_id& # 39;]); }); 模式:创建(& # 39;role_user& # 39;,, function (Blueprint $表),{ 表→美元整数(& # 39;user_id # 39;)→无符号(); 表→美元整数(& # 39;role_id& # 39;)→无符号(); 表→美元外国(& # 39;role_id& # 39;) →引用(& # 39;id # 39;) →(& # 39;角色# 39;) →onDelete(& # 39;级联# 39;); 表→美元外国(& # 39;user_id # 39;) →引用(& # 39;id # 39;) →(& # 39;用户# 39;) →onDelete(& # 39;级联# 39;); 美元表→主([& # 39;role_id& # 39;,, & # 39; user_id # 39;]); }); } public function 下() { 模式::下降(& # 39;角色# 39;); 模式::下降(& # 39;权限# 39;); 模式::下降(& # 39;permission_role& # 39;); 模式::下降(& # 39;role_user& # 39;); }
上面的代码会创建角色表,权限表,角色与权限的中间表以及角色与用户的中间表。
<强> 2。创建模型强>
接下来使用命令行分别创建角色与权限模型:
php artisan : model 许可 php artisan 使:model 角色
然后分别打开Permission.php,作用。php以及用户。php,加入下面的代码:
//, Permissions.php public function 角色() { return 这→美元belongsToMany(角色::类); }
//, Role.php public function 权限() { return 这→美元belongsToMany(权限::类); }//给角色添加权限 public function  givePermissionTo(许可) { return 这→美元权限()→保存($许可); }
//, User.php public function 角色() { return 这→美元belongsToMany(角色::类); }//,判断用户是否具有某个角色 public function  hasRole(角色)美元 { if (is_string(角色)美元),{ return 美元这→→角色包含(& # 39;名字# 39;,,美元角色); } return ! !,角色→美元相交($ this→角色)→count (); }//,判断用户是否具有某权限 public function  hasPermission(许可) { return 这→美元hasRole(允许美元→角色); }//,给用户分配角色 public function  assignRole(角色)美元 { return 美元这→角色()→保存( 作用:whereName(角色)→firstOrFail () ); }
上面的代码实现了给角色分配权限及给用户分配角色,然后还提供了判断用户是否具有某角色及某权限的方法。
之后就给使用Laravel提供的授权来定义权限控制了,打开/app/供应商/AuthServiceProvider。php文件,在引导()中添加代码:
public function 引导(GateContract 门美元) { 父:registerPolicies(门);=$ permissions \ App \许可::与(& # 39;角色# 39;)→(); foreach (permissions 美元;as $许可),{ 门→美元定义(许可→美元的名字,,功能(用户)美元,use (许可),{ return 用户→美元hasPermission($许可); }); } }如何在Laravel5.1框架中使用ACL权限控制系统