Rumah >rangka kerja php >Laravel >Mari kita bincangkan tentang pakej pengembangan pengurusan kebenaran dalam Laravel
Artikel ini membawakan anda pengetahuan yang berkaitan tentang laravel, yang terutamanya memperkenalkan isu yang berkaitan dengan pakej pengembangan pengurusan kebenaran Mari kita lihat bersama-sama.
[Cadangan berkaitan: tutorial video laravel]
Sebagai contoh , Sebagai contoh, forum yang biasa kita gunakan
juruweb------mempunyai kuasa tertinggi, dan yang paling penting ialah kuasa untuk mengurus pengguna
pentadbir----- bagi sesetengah pihak Pengurusan artikel tidak akan memberi kesan besar pada tapak web
vip ----- Mempunyai kebenaran muat turun untuk beberapa sumber
Pengguna biasa---- hanya boleh membuat perbandingan mudah Penambahan, pemadaman, pengubahsuaian, ulasan, dsb. artikel sendiri
Pelawat ---- hanya boleh melakukan penyemakan imbas asas
Mari kita selesaikan hubungan
Kebenaran (kebenaran) dan Peranan (peranan), satu kebenaran mungkin dimiliki oleh berbilang peranan dan satu peranan mungkin mempunyai berbilang perhubungan Persatuan: banyak-ke-banyak (peranan_mempunyai_keizinan)
<.>Pengguna dan Kebenaran Satu-ke-banyak (model_mempunyai_keizinan)
Pengguna dan Peranan Satu-ke-banyak (model_mempunyai_peranan )
Menjelang masa Said, perhubungan itu jelas, apabila pengguna mempunyai peranan atau kebenaran apa, operasi yang sepadan dilakukan1 Pasang pakej pengembangan
composer require "spatie/laravel-permission:~2.7"Jana fail pemindahan pangkalan data: php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider" --tag="migrations"Anda boleh melihat maklumat jadual yang berkaitan dalam direktori migrasi dan lakukan migrasi pangkalan data
php artisan migrateJana maklumat konfigurasi:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"Muat di bawah model Pengguna
..... use Spatie\Permission\Traits\HasRoles; // use class User extends Authenticatable { use HasRoles; // 加载角色相关信息 .....Buat peranan dan pengguna
use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Permission; ..... $role = Role::create(['name' => 'writer']); // 创建角色 $permission = Permission::create(['name' => 'edit articles']);// 创建权限
$user->givePermissionTo('edit articles');Tambahkan peranan kepada pengguna
$user->assignRole('writer'); $user->assignRole(['writer', 'admin']);Padam kebenaran kepada pengguna
$user->revokePermissionTo('edit articles');Tambahkan peranan pada peranan Tambah kebenaran
$role->givePermissionTo('edit articles');Tambahkan kebenaran pada peranan
$role->givePermissionTo('edit articles');Batalkan kebenaran dan tambahkan yang baharu
$user->syncPermissions(['edit articles', 'delete articles']);Dapatkan koleksi peranan pengguna semasa
$user->getRoleNames();Segerakkan berbilang peranan kepada kebenaran
$role->syncPermissions($permissions); // @param array $permissions $permission->syncRoles($roles);Alih keluar kebenaran daripada peranan
$role->revokePermissionTo($permission); $permission->removeRole($role);Dapatkan senarai kebenaran pengguna semasa
$permissions = $user->permissions;Dapatkan semua kebenaran pengguna, sama ada kebenaran langsung (odel_has_permissions), atau dapatkannya daripada peranan, atau dapatkan daripada kedua-duanya
$permissions = $user->getDirectPermissions(); $permissions = $user->getPermissionsViaRoles(); $permissions = $user->getAllPermissions();Dapatkan koleksi koleksi peranan pengguna
$roles = $user->getRoleNames(); // Returns a collectionKembalikan Pengguna dengan peranan tertentu | Mengembalikan hanya pengguna dengan peranan 'penulis'
$users = User::role('writer')->get(); //Mengembalikan pengguna dengan kebenaran tertentu
Kelas pengesahan
$users = User::permission('edit articles')->get();Semak sama ada terdapat kebenaran tertentu
$user->hasRole('writer');
$user->hasPermissionTo('edit articles'); $user->can('edit articles');Sama ada ia mempunyai set kebenaran
$user->hasRole('writer'); $user->hasAnyRole(Role::all()); $user->hasAllRoles(Role::all());Semak sama ada peranan mempunyai kebenaran tertentu | Padamkan kebenaran tertentu
$user->hasPermissionTo('1'); $user->hasPermissionTo(Permission::find(1)->id); $user->hasPermissionTo($somePermission->id);
Templat menggunakan
$user->hasAnyPermission(['edit articles', 'publish articles', 'unpublish articles']);
$role->hasPermissionTo('edit articles'); $role->revokePermissionTo('edit articles'); // 删除
@role('writer') I am a writer! @else I am not a writer... @endrole ------------------------ @hasrole('writer') I am a writer! @else I am not a writer... @endhasrole ------------------------ @can('edit articles') // 拥有某个权限 可执行操作 // @endcanPetua: Jika dalam pangkalan data Untuk mengubah suai jadual maklumat berkaitan kebenaran, anda mesti menggunakan kaedah mengosongkan cache
use Illuminate\Database\Seeder; use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Permission; class RolesAndPermissionsSeeder extends Seeder { public function run() { // Reset cached roles and permissions app()['cache']->forget('spatie.permission.cache'); // create permissions Permission::create(['name' => 'edit articles']); Permission::create(['name' => 'delete articles']); Permission::create(['name' => 'publish articles']); Permission::create(['name' => 'unpublish articles']); // create roles and assign created permissions $role = Role::create(['name' => 'writer']); $role->givePermissionTo('edit articles'); $role = Role::create(['name' => 'moderator']); $role->givePermissionTo(['publish articles', 'unpublish articles']); $role = Role::create(['name' => 'super-admin']); $role->givePermissionTo(Permission::all()); } }tutorial video laravel
Atas ialah kandungan terperinci Mari kita bincangkan tentang pakej pengembangan pengurusan kebenaran dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!