欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何在Laravel5.1框架中使用ACL權(quán)限控制系統(tǒng)-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)如何在Laravel5.1框架中使用 ACL權(quán)限控制系統(tǒng),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有富源免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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


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

php artisan make:migration create_permissions_and_roles --create=permissions

之后打開(kāi)剛剛創(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');
}

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

2. 創(chuàng)建模型

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

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

然后分別打開(kāi)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);
}
// 判斷用戶是否具有某個(gè)角色
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()
);
}

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

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

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

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

為方便起見(jiàn),這里使用 tinker 命令行工具來(lái)添加幾條測(cè)試數(shù)據(jù):

php artisan tinker

之后進(jìn)入命令行,依次輸入下列命令:

// 改變命名空間位置,避免下面每次都要輸入 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)建了兩個(gè)權(quán)限:edit-post 和 delete-post,然后創(chuàng)建了 editor 和 admin 兩個(gè)角色,editor 角色擁有 edit-post 的權(quán)限,而 admin 兩個(gè)權(quán)限都有。之后生成了兩個(gè)用戶,分別給他們分配了 editor 和 admin 的角色,即:ID 1 用戶擁有 editor 角色,因此只有 edit-post 權(quán)限,而 ID 2 用戶擁有 admin 角色,因此具有 edit-post 和 delete-post 權(quán)限。下面我們來(lái)驗(yàn)證下是否正確。

打開(kāi) routes.php 文件:

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

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

<!DOCTYPE html>
<html>
<head>
<title>Laravel</title>
</head>
<body>
<h2>權(quán)限測(cè)試</h2>
<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>

在視圖中我們通過(guò) Laravel 提供的 @can 方法來(lái)判斷用戶是否具有某權(quán)限。

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

如何在Laravel5.1框架中使用 ACL權(quán)限控制系統(tǒng)

關(guān)于如何在Laravel5.1框架中使用 ACL權(quán)限控制系統(tǒng)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前題目:如何在Laravel5.1框架中使用ACL權(quán)限控制系統(tǒng)-創(chuàng)新互聯(lián)
文章出自:http://aaarwkj.com/article12/dgdcgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站排名、做網(wǎng)站、網(wǎng)站設(shè)計(jì)軟件開(kāi)發(fā)、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
91在线国产手机视频| 日本东京热在线免费观看| 亚洲午夜天堂在线a毛片| 成年人三级黄色片视频| 亚洲乱码在线中文字幕| 国产在线精品91系列| 亚洲国产精品激情在线| 国产传媒在线免费播放| 久久精品色一情一乱一伦| 欧美日韩精品在线二区| 操国产熟女大白屁股| 人妻大乳一区二区三区| 亚洲狠狠爱一区二区三区| 国产精品久久久久精品三级中文国| 国产黄片自拍视频免费看| 97久久精品国产成人影院| 日本国产一区二区三区在线观看 | 黑丝美女国产精品久久久| 日本韩国一级黄色免费| 熟女自拍偷拍视频播放| 国产精品熟女一区二区三区| 成人av影视中文字幕| 成人激情电影免费在线| 亚洲三区久久婷婷激情| 日韩激情一区二区三区| 六月综合激情丁香婷婷色| 日本免费在线不卡一区二区| 久久亚洲精品中文字幕馆| 日本一级黄色影视大全| 人体蜜桃视频一区二区| 国产精品自拍国产精品| 亚洲国产欧美日韩综合| 天堂中文在线免费观看av| 亚洲欧美丝袜清纯另类| 成年人免费久久毛片| 夫妻性生活视频全过程| 亚洲欧美激情专区在线| 国内精品av在线观看| 强暴美女视频大全久久久| 亚洲久久精品一区二区| 亚洲欧美成人高清在线观看|