婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Laravel5.1框架自帶權(quán)限控制系統(tǒng) ACL用法分析

Laravel5.1框架自帶權(quán)限控制系統(tǒng) ACL用法分析

熱門標(biāo)簽:河南電銷卡外呼系統(tǒng)哪家強 山西回?fù)芡夂粝到y(tǒng) 百應(yīng)電話機器人服務(wù) 騰訊外呼管理系統(tǒng) 山西探意電話機器人 青島語音外呼系統(tǒng)招商 岳陽外呼型呼叫中心系統(tǒng)在哪里 揚州地圖標(biāo)注app 昭通辦理400電話

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

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

1. 創(chuàng)建角色與權(quán)限表

使用命令行創(chuàng)建角色與權(quán)限表:

php artisan make:migration create_permissions_and_roles --create=permissions

之后打開剛剛創(chuàng)建的文件,填入下面的代碼:

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');
}

上面的代碼會創(chuàng)建角色表、權(quán)限表、角色與權(quán)限的中間表以及角色與用戶的中間表。

2. 創(chuàng)建模型

接下來使用命令行分別創(chuàng)建角色與權(quán)限模型:

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);
}
//給角色添加權(quán)限
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();
}
// 判斷用戶是否具有某權(quán)限
public function hasPermission($permission)
{
return $this->hasRole($permission->roles);
}
// 給用戶分配角色
public function assignRole($role)
{
return $this->roles()->save(
Role::whereName($role)->firstOrFail()
);
}

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

之后就給使用Laravel提供的Authorization來定義權(quán)限控制了,打開 /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);
});
}
}

通過上面的方法就定義好了各個權(quán)限。下面就該填充數(shù)據(jù)了。

3. 填充數(shù)據(jù)

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

php artisan tinker

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

// 改變命名空間位置,避免下面每次都要輸入 App
namespace App
// 創(chuàng)建權(quán)限
$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()
// 創(chuàng)建角色
$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()
// 給角色分配權(quán)限
$role_admin->givePermissionTo($permission_edit)
$role_admin->givePermissionTo($permission_delete)
// 創(chuàng)建用戶
$editor = factory(User::class)->create()
// 給用戶分配角色
$editor->assignRole($role_editor->name)
$admin = factory(User::class)->create()
$admin->assignRole($role_admin->name)

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

打開 routes.php 文件:

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

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

!DOCTYPE html>
html>
head>
title>Laravel/title>
/head>
body>
h1>權(quán)限測試/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 方法來判斷用戶是否具有某權(quán)限。

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

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

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

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

標(biāo)簽:寶雞 婁底 鎮(zhèn)江 南陽 黃南 宜賓 湛江 銅川

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel5.1框架自帶權(quán)限控制系統(tǒng) ACL用法分析》,本文關(guān)鍵詞  Laravel5.1,框架,自帶,權(quán)限,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel5.1框架自帶權(quán)限控制系統(tǒng) ACL用法分析》相關(guān)的同類信息!
  • 本頁收集關(guān)于Laravel5.1框架自帶權(quán)限控制系統(tǒng) ACL用法分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品国产三级国产专播品爱网 | 精品粉嫩aⅴ一区二区三区四区| 日日夜夜精品视频免费| 337p亚洲精品色噜噜| 粉嫩aⅴ一区二区三区四区| 日韩理论片一区二区| 欧美精品一区在线观看| 国产一区二区在线观看视频| 成人欧美一区二区三区1314 | 久久成人免费电影| 精品久久久久久久久久久院品网| 在线视频观看一区| 亚洲国产精品国自产拍av| 国产成人欧美日韩在线电影| 亚洲高清视频在线| 久久久久综合网| 91成人免费网站| eeuss影院一区二区三区| 欧美tickle裸体挠脚心vk| 欧美sm美女调教| 91麻豆精东视频| 蜜臀av在线播放一区二区三区| 欧美激情一区二区在线| 久久久精品一品道一区| 日本一区二区三区在线不卡| 国产精品理伦片| 亚洲 欧美综合在线网络| 91片在线免费观看| 丰满少妇在线播放bd日韩电影| 国产成人精品亚洲午夜麻豆| 国产精品资源在线看| 春色校园综合激情亚洲| 国产 欧美在线| 91麻豆自制传媒国产之光| 91精彩视频在线观看| 777奇米四色成人影色区| 精品国内片67194| 国产精品你懂的在线欣赏| 亚洲欧美一区二区久久| 日韩精品成人一区二区在线| 国产一区二区在线电影| 91丝袜国产在线播放| 中文字幕欧美国产| √…a在线天堂一区| 一区二区三区欧美久久| 亚洲午夜激情网站| 粉嫩在线一区二区三区视频| 亚洲另类一区二区| 久久午夜色播影院免费高清| 偷拍一区二区三区| 一本一本大道香蕉久在线精品| 欧美日韩一区视频| 亚洲精品视频免费看| 国产一区二区在线看| 久久精品视频一区| 日日噜噜夜夜狠狠视频欧美人| 日韩激情av在线| 欧美三级韩国三级日本一级| 国产大陆亚洲精品国产| 蜜臀久久99精品久久久画质超高清| 一区二区久久久久久| 国产精品久久久久久亚洲毛片 | 日本欧美一区二区三区乱码| 久久精品国产亚洲高清剧情介绍| 色综合av在线| 一区二区三区久久久| 国产91精品一区二区麻豆亚洲| 亚洲精品亚洲人成人网在线播放| 成人综合日日夜夜| 欧美日韩精品福利| 日韩高清一级片| 亚洲视频在线观看一区| 国产尤物一区二区在线| 欧美xxxx老人做受| 依依成人精品视频| 午夜精品福利一区二区三区av| 日韩精品一区在线| 亚洲乱码国产乱码精品精的特点| 国产成人精品免费视频网站| 亚洲精品一线二线三线| av综合在线播放| 亚洲欧美色图小说| 在线免费亚洲电影| 91麻豆精品在线观看| 精品久久久久99| 精品一区二区三区不卡| 欧美色手机在线观看| 亚洲日本在线视频观看| www.在线成人| 天天色综合天天| 久久久久久久久岛国免费| 91婷婷韩国欧美一区二区| 一区二区三区中文字幕在线观看| 欧美久久久一区| 亚洲一区二区三区视频在线| 2021国产精品久久精品| 精品国产123| 91美女在线看| 欧美日韩在线三级| 成人午夜又粗又硬又大| 久久综合久久综合久久| 蜜桃视频在线观看一区| 欧美一级高清片在线观看| 午夜精品视频在线观看| 欧美军同video69gay| 亚洲大型综合色站| 欧美区在线观看| 蜜桃av一区二区三区电影| 日韩精品一区二区在线| 国产在线看一区| 欧美国产禁国产网站cc| voyeur盗摄精品| 亚洲尤物视频在线| 欧美精品vⅰdeose4hd| 日韩成人精品在线| 久久免费电影网| 本田岬高潮一区二区三区| 亚洲精品乱码久久久久久久久 | 亚洲欧美一区二区视频| 91在线观看地址| 亚洲成a人在线观看| 日韩精品一区二区三区四区 | 国产视频一区在线观看| 成人激情视频网站| 亚洲精品乱码久久久久久| 91麻豆精品久久久久蜜臀| 国产一区激情在线| 亚洲黄色片在线观看| 欧美一区2区视频在线观看| 国产乱子伦一区二区三区国色天香| 久久久精品黄色| 91九色最新地址| 国产伦精品一区二区三区免费 | 91久久精品一区二区三| 日韩精品电影在线| 国产亚洲一区字幕| 91免费版在线| 蜜桃av一区二区在线观看| 国产日韩三级在线| 欧美猛男gaygay网站| 成人免费视频网站在线观看| 亚洲a一区二区| 欧美成人a在线| 91精彩视频在线观看| 国产一区二区三区高清播放| 一区二区免费在线| 欧美高清激情brazzers| 国产伦精一区二区三区| 亚洲国产一二三| 国产亚洲一二三区| 欧美久久免费观看| 成人综合激情网| 丝袜亚洲精品中文字幕一区| 国产精品久久久久久久久免费相片| 欧美日韩国产成人在线免费| 久久电影国产免费久久电影| 一区二区三区欧美在线观看| 日韩免费电影网站| 欧美妇女性影城| 欧美图区在线视频| 国产一区二区三区四区五区美女 | 91福利社在线观看| 国产一区二区三区高清播放| 一区二区三区成人| 精品国产乱码久久久久久久| 欧美综合在线视频| 国产91露脸合集magnet| 蜜臀久久99精品久久久久久9 | 亚洲国产乱码最新视频| 久久精品亚洲一区二区三区浴池| 91麻豆精品国产91久久久使用方法| 成人短视频下载| 国产精一品亚洲二区在线视频| 五月综合激情网| 久久久久久黄色| 欧美在线你懂的| 欧美性受xxxx| 日本精品一区二区三区四区的功能| 国产69精品久久99不卡| 丝袜美腿亚洲综合| 天堂久久一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟| 国产日韩欧美精品在线| 9191成人精品久久| 欧美日韩亚洲另类| 亚洲人成亚洲人成在线观看图片| 99在线精品观看| 欧美国产成人精品| 丝袜亚洲另类欧美综合| 一区二区三区小说| 国产精品国产a级| 欧美国产1区2区| 亚洲国产精品激情在线观看| 精品成人在线观看| 久久久亚洲精品石原莉奈| 精品国产在天天线2019| 久久久三级国产网站| 国产网站一区二区三区| 中文字幕va一区二区三区| 欧美岛国在线观看|