校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Laravel5.1框架自帶權限控制系統 ACL用法分析

Laravel5.1框架自帶權限控制系統 ACL用法分析

熱門標簽:河南電銷卡外呼系統哪家強 山西回撥外呼系統 百應電話機器人服務 騰訊外呼管理系統 山西探意電話機器人 青島語音外呼系統招商 岳陽外呼型呼叫中心系統在哪里 揚州地圖標注app 昭通辦理400電話

本文實例講述了Laravel5.1框架自帶權限控制系統 ACL用法。分享給大家供大家參考,具體如下:

Laravel在5.1.11版本中加入了Authorization,可以讓用戶自定義權限,今天分享一種定義權限系統的方法。

1. 創建角色與權限表

使用命令行創建角色與權限表:

php artisan make:migration create_permissions_and_roles --create=permissions

之后打開剛剛創建的文件,填入下面的代碼:

public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('label');
$table->string('description')->nullable();
$table->timestamps();
});
Schema::create('permissions', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('label');
$table->string('description')->nullable();
$table->timestamps();
});
Schema::create('permission_role', function (Blueprint $table) {
$table->integer('permission_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->foreign('permission_id')
->references('id')
->on('permissions')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onDelete('cascade');
$table->primary(['permission_id', 'role_id']);
});
Schema::create('role_user', function (Blueprint $table) {
$table->integer('user_id')->unsigned();
$table->integer('role_id')->unsigned();
$table->foreign('role_id')
->references('id')
->on('roles')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->primary(['role_id', 'user_id']);
});
}
public function down()
{
Schema::drop('roles');
Schema::drop('permissions');
Schema::drop('permission_role');
Schema::drop('role_user');
}

上面的代碼會創建角色表、權限表、角色與權限的中間表以及角色與用戶的中間表。

2. 創建模型

接下來使用命令行分別創建角色與權限模型:

php artisan make:model Permission
php artisan make:model Role

然后分別打開Permission.php、Role.php 以及 User.php ,加入下面的代碼:

// Permissions.php
public function roles()
{
return $this->belongsToMany(Role::class);
}
 
// Role.php
public function permissions()
{
return $this->belongsToMany(Permission::class);
}
//給角色添加權限
public function givePermissionTo($permission)
{
return $this->permissions()->save($permission);
}
 
// User.php
public function roles()
{
return $this->belongsToMany(Role::class);
}
// 判斷用戶是否具有某個角色
public function hasRole($role)
{
if (is_string($role)) {
return $this->roles->contains('name', $role);
}
return !! $role->intersect($this->roles)->count();
}
// 判斷用戶是否具有某權限
public function hasPermission($permission)
{
return $this->hasRole($permission->roles);
}
// 給用戶分配角色
public function assignRole($role)
{
return $this->roles()->save(
Role::whereName($role)->firstOrFail()
);
}

上面的代碼實現了給角色分配權限及給用戶分配角色,然后還提供了判斷用戶是否具有某角色及某權限的方法。

之后就給使用Laravel提供的Authorization來定義權限控制了,打開 /app/Providers/AuthServiceProvider.php 文件,在 boot() 中添加代碼:

public function boot(GateContract $gate)
{
parent::registerPolicies($gate);
$permissions = \App\Permission::with('roles')->get();
foreach ($permissions as $permission) {
$gate->define($permission->name, function($user) use ($permission) {
return $user->hasPermission($permission);
});
}
}

通過上面的方法就定義好了各個權限。下面就該填充數據了。

3. 填充數據

為方便起見,這里使用 tinker 命令行工具來添加幾條測試數據:

php artisan tinker

之后進入命令行,依次輸入下列命令:

// 改變命名空間位置,避免下面每次都要輸入 App
namespace App
// 創建權限
$permission_edit = new Permission
$permission_edit->name = 'edit-post'
$permission_edit->label = 'Can edit post'
$permission_edit->save()
$permission_delete = new Permission
$permission_delete->name = 'delete-post'
$permission_delete->label = 'Can delete post'
$permission_delete->save()
// 創建角色
$role_editor = new Role
$role_editor->name = 'editor';
$role_editor->label = 'The editor of the site';
$role_editor->save()
$role_editor->givePermissionTo($permission_edit)
$role_admin = new Role
$role_admin->name = 'admin';
$role_admin->label = 'The admin of the site';
$role_admin->save()
// 給角色分配權限
$role_admin->givePermissionTo($permission_edit)
$role_admin->givePermissionTo($permission_delete)
// 創建用戶
$editor = factory(User::class)->create()
// 給用戶分配角色
$editor->assignRole($role_editor->name)
$admin = factory(User::class)->create()
$admin->assignRole($role_admin->name)

上面我們創建了兩個權限:edit-post 和 delete-post,然后創建了 editor 和 admin 兩個角色,editor 角色擁有 edit-post 的權限,而 admin 兩個權限都有。之后生成了兩個用戶,分別給他們分配了 editor 和 admin 的角色,即:ID 1 用戶擁有 editor 角色,因此只有 edit-post 權限,而 ID 2 用戶擁有 admin 角色,因此具有 edit-post 和 delete-post 權限。下面我們來驗證下是否正確。

打開 routes.php 文件:

Route::get('/', function () {
$user = Auth::loginUsingId(1);
return view('welcome');
})

上面我們先驗證 ID 1 用戶的權限,然后修改 /resources/views/welcome.blade.php 文件:

!DOCTYPE html>
html>
head>
title>Laravel/title>
/head>
body>
h1>權限測試/h1>
p>
@can('edit-post')
a href="#" rel="external nofollow" rel="external nofollow" >Edit Post/a>
@endcan
/p>
p>
@can('delete-post')
a href="#" rel="external nofollow" rel="external nofollow" >Delete Post/a>
@endcan
/p>
/body>
/html>

在視圖中我們通過 Laravel 提供的 @can 方法來判斷用戶是否具有某權限。

打開瀏覽器,訪問上面定義的路由,可以看到視圖中只出現了 Edit Post 鏈接。之后我們修改路由中用戶ID為 2 ,然后再次刷新瀏覽器,可以看到,這次同時出現了 Edit Post 和 Delete Post 兩個鏈接,說明我們定義的權限控制起作用了。

更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • 在Laravel5中正確設置文件權限的方法
  • Laravel5權限管理方法詳解
  • Laravel框架實現的rbac權限管理操作示例
  • laravel實現簡單用戶權限的示例代碼
  • 解決laravel中日志權限莫名變成了root的問題
  • laravel利用中間件做防非法登錄和權限控制示例
  • Laravel5.1數據庫連接、創建數據庫、創建model及創建控制器的方法
  • laravel5.1框架基礎之Blade模板繼承簡單使用方法分析
  • Laravel5.1框架注冊中間件的三種場景詳解
  • laravel5.1框架基礎之路由詳解
  • laravel5.1框架model類查詢的實現方法

標簽:寶雞 婁底 鎮江 南陽 黃南 宜賓 湛江 銅川

巨人網絡通訊聲明:本文標題《Laravel5.1框架自帶權限控制系統 ACL用法分析》,本文關鍵詞  Laravel5.1,框架,自帶,權限,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel5.1框架自帶權限控制系統 ACL用法分析》相關的同類信息!
  • 本頁收集關于Laravel5.1框架自帶權限控制系統 ACL用法分析的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美一级专区免费大片| 国产一区不卡在线| 久久精品国产一区二区三| 在线精品视频一区二区| 国产精品视频在线看| 国产乱妇无码大片在线观看| 欧美精品一区二区三区在线播放 | 久久尤物电影视频在线观看| 免费精品视频最新在线| 久久免费偷拍视频| 成人在线视频一区二区| 国产精品污www在线观看| 一本大道av一区二区在线播放| 亚洲黄色片在线观看| 日韩一区二区免费在线观看| 国产v综合v亚洲欧| 香蕉久久夜色精品国产使用方法| 欧美丰满高潮xxxx喷水动漫| 麻豆91小视频| 亚洲天堂中文字幕| 欧美视频一区二| 免费不卡在线视频| 亚洲欧洲美洲综合色网| 日本大香伊一区二区三区| 蜜桃精品视频在线观看| 欧美v国产在线一区二区三区| 成人av动漫在线| 五月婷婷久久丁香| 欧美国产丝袜视频| 337p亚洲精品色噜噜噜| 国产精品一区二区在线观看不卡| 一区二区三区在线看| 精品国产乱码久久久久久1区2区| 色综合久久九月婷婷色综合| 国产一区亚洲一区| 日本强好片久久久久久aaa| 亚洲少妇屁股交4| 国产午夜精品在线观看| 欧美一区国产二区| 欧美日韩一区国产| 91老师国产黑色丝袜在线| 国产一区二三区好的| 青青草国产精品亚洲专区无| 一区二区三区在线视频观看58| 国产农村妇女精品| 久久影视一区二区| 日韩美女视频在线| 色94色欧美sute亚洲线路一ni| 亚洲福利一区二区三区| 亚洲激情图片qvod| 亚洲婷婷国产精品电影人久久| 国产夜色精品一区二区av| 欧美一区二视频| 制服丝袜在线91| 91麻豆精品国产| 91精品国产综合久久精品性色| 欧美视频一区在线| 欧美美女直播网站| 91精品一区二区三区久久久久久| 色悠久久久久综合欧美99| 97国产精品videossex| aa级大片欧美| 91久久线看在观草草青青| 91在线码无精品| 欧美最猛性xxxxx直播| 一本久道久久综合中文字幕| 99久久伊人网影院| 色综合天天综合| 在线亚洲免费视频| 欧美视频一区在线观看| 欧美日韩小视频| 日韩欧美电影在线| 国产欧美视频在线观看| 国产精品丝袜久久久久久app| 国产精品久久久久久久久图文区| 亚洲欧美偷拍另类a∨色屁股| 亚洲天堂av一区| 亚洲国产aⅴ成人精品无吗| 午夜精品福利久久久| 免费人成黄页网站在线一区二区| 精品一区二区三区久久| 国产99久久久久久免费看农村| 成人高清伦理免费影院在线观看| 97精品久久久久中文字幕| 欧美男生操女生| 久久久久久久综合狠狠综合| 国产精品久久福利| 一区二区三区加勒比av| 奇米影视在线99精品| 成人h精品动漫一区二区三区| 欧美午夜免费电影| 久久久久久综合| 亚洲综合色在线| 狠狠v欧美v日韩v亚洲ⅴ| 色天天综合久久久久综合片| 日韩视频一区二区三区| 中文字幕欧美激情一区| 水野朝阳av一区二区三区| 粉嫩av一区二区三区| 在线观看亚洲精品| 亚洲国产精品激情在线观看| 青青草国产精品亚洲专区无| 色悠悠久久综合| 国产午夜亚洲精品羞羞网站| 午夜精品福利在线| av电影在线观看一区| 日韩欧美一区在线观看| 亚洲午夜影视影院在线观看| 成人av在线网站| 久久久久久久久久看片| 久久激情综合网| 欧美日韩亚洲国产综合| 亚洲欧洲精品一区二区三区不卡| 激情五月婷婷综合| 精品区一区二区| 蜜乳av一区二区| 日韩一卡二卡三卡国产欧美| 亚洲蜜臀av乱码久久精品蜜桃| 国产一区二区在线电影| 7777精品伊人久久久大香线蕉| 一区二区三区高清| 99久久综合精品| 亚洲天堂免费看| 懂色av一区二区三区免费观看| 精品久久国产老人久久综合| 久久99国产乱子伦精品免费| 日韩一级二级三级| 亚洲福利视频三区| 99久久伊人久久99| 亚洲精品国产品国语在线app| jlzzjlzz欧美大全| 综合久久给合久久狠狠狠97色 | 中文乱码免费一区二区| 国产伦精品一区二区三区视频青涩 | 91猫先生在线| 国产精品久久一卡二卡| 国产ts人妖一区二区| 久久综合一区二区| 国产精品亚洲成人| 国产清纯白嫩初高生在线观看91| 久久91精品国产91久久小草| 2014亚洲片线观看视频免费| 成人免费黄色在线| 亚洲综合一区二区精品导航| 欧美视频一区二区三区四区| 舔着乳尖日韩一区| 日韩精品一区二区三区在线| 狠狠色狠狠色综合系列| 久久精品一区二区三区四区| 成人性生交大片免费看中文网站| 中文字幕日韩av资源站| 色8久久人人97超碰香蕉987| 亚洲午夜羞羞片| 日韩欧美第一区| 丁香六月综合激情| 亚洲图片欧美色图| 欧美精品一区二区三区一线天视频| 成人在线一区二区三区| 亚洲成av人在线观看| 日韩午夜精品视频| 成人激情免费视频| 亚洲一区二区三区四区不卡| 日韩精品最新网址| 色婷婷综合久久久久中文一区二区 | 高清beeg欧美| 亚洲18色成人| 国产午夜精品福利| 欧美精品免费视频| 成人av一区二区三区| 日韩专区欧美专区| 国产精品的网站| 精品福利av导航| 欧美自拍偷拍一区| 国产91丝袜在线播放| 亚洲一二三专区| 亚洲欧洲精品天堂一级 | 久久嫩草精品久久久精品一| 97久久精品人人澡人人爽| 日韩不卡免费视频| 日韩毛片高清在线播放| 91精品国产综合久久精品性色| 成人精品小蝌蚪| 美国十次综合导航| 中文字幕一区二区在线观看| 日韩午夜激情免费电影| 色婷婷精品久久二区二区蜜臂av | 久久综合色8888| 91成人国产精品| 国产真实精品久久二三区| 亚洲综合色婷婷| 国产女同互慰高潮91漫画| 91.com视频| 色综合久久中文字幕综合网| 国产在线国偷精品免费看| 一区二区理论电影在线观看| 国产日韩成人精品| 久久―日本道色综合久久| 欧美精品v国产精品v日韩精品| 成人动漫av在线| 成av人片一区二区|