Rumah >rangka kerja php >Laravel >Mari kita bincangkan tentang pakej pengembangan pengurusan kebenaran dalam Laravel

Mari kita bincangkan tentang pakej pengembangan pengurusan kebenaran dalam Laravel

WBOY
WBOYke hadapan
2022-05-02 09:00:163966semak imbas

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.

Mari kita bincangkan tentang pakej pengembangan pengurusan kebenaran dalam Laravel

[Cadangan berkaitan: tutorial video laravel]

Apakah itu peranan berbilang pengguna

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

Buat jadual


  • peranan ------- Maklumat peranan: Juruweb, dsb.
  • kebenaran ------- Maklumat kebenaran: Kandungan pengurusan, dsb. .
  • model_has_roles ------- Peranan sepadan model = Peranan sepadan pengguna
  • peranan_has_permissions ------- Keizinan sepadan peranan = Apakah keizinan yang dimiliki oleh peranan itu
  • model_has_permissions ----- -- Model yang sepadan dengan kebenaran = Pengguna mempunyai kebenaran

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 dilakukan

1 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 migrate
Jana 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']);// 创建权限

Gunakan


Tambah kebenaran kepada pengguna

$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 collection
Kembalikan 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');

Semak jika terdapat peranan|atau lajur tertentu


Lulus nilai id untuk menentukan sama ada terdapat kebenaran tertentu

$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'); // 删除

pengisian data


@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') // 拥有某个权限 可执行操作
//
@endcan
Petua: Jika dalam pangkalan data Untuk mengubah suai jadual maklumat berkaitan kebenaran, anda mesti menggunakan kaedah mengosongkan cache

[Cadangan berkaitan:
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!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam