如何在Laravel5.1框架中使用ACL权限控制系统

  介绍

这篇文章将为大家详细讲解有关如何在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权限控制系统