Rumah rangka kerja php Laravel Bagaimana untuk melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel

Bagaimana untuk melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel

Nov 02, 2023 pm 02:35 PM
laravel Kawalan kebenaran Kawalan pelbagai peringkat

Bagaimana untuk melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel

Cara melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel

Kawalan kebenaran adalah salah satu fungsi yang sangat penting semasa membangunkan aplikasi web. Laravel ialah rangka kerja PHP popular yang menyediakan satu set alat berkuasa untuk melaksanakan kawalan kebenaran yang fleksibel. Artikel ini akan memperkenalkan cara melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel dan memberikan contoh kod khusus.

1. Memahami kawalan kebenaran berbilang peringkat

Kawalan kebenaran berbilang peringkat bermakna dalam sistem, pengguna yang berbeza mempunyai tahap kebenaran yang berbeza. Tahap kebenaran yang berbeza membolehkan pengguna melakukan operasi yang berbeza. Sebagai contoh, sistem blog mungkin mempunyai tiga tahap kebenaran: pentadbir, editor dan pembaca. Pentadbir boleh mengedit, menerbitkan dan memadam blog, editor boleh mengedit dan menerbitkan blog, dan pembaca hanya boleh menyemak imbas blog.

Dalam Laravel, kita boleh menggunakan konsep peranan dan kebenaran untuk melaksanakan kawalan kebenaran berbilang peringkat. Peranan ialah satu set kebenaran, dan kebenaran ialah kawalan akses kepada operasi atau sumber.

2. Cipta jadual peranan dan kebenaran

Pertama, kita perlu mencipta dua jadual pangkalan data untuk menyimpan maklumat peranan dan kebenaran. Jadual boleh dibuat dengan mudah menggunakan alat migrasi Laravel.

php artisan make:migration create_roles_table --create=roles
php artisan make:migration create_permissions_table --create=permissions
Salin selepas log masuk

Kemudian tentukan struktur jadual dalam fail migrasi.

// create_roles_table.php
public function up()
{
    Schema::create('roles', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name')->unique();
        $table->timestamps();
    });
}

// create_permissions_table.php
public function up()
{
    Schema::create('permissions', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name')->unique();
        $table->string('slug')->unique();
        $table->timestamps();
    });
}
Salin selepas log masuk

Jalankan arahan migrasi pangkalan data untuk mencipta jadual.

php artisan migrate
Salin selepas log masuk

3. Wujudkan persatuan model

Seterusnya, kita perlu mewujudkan perkaitan antara peranan dan kebenaran.

Tentukan perkaitan banyak-ke-banyak dengan model Kebenaran dalam Role model.

// Role.php
public function permissions()
{
    return $this->belongsToMany('AppPermission');
}
Salin selepas log masuk

Tentukan perkaitan banyak-ke-banyak dengan Role model dalam model Kebenaran.

// Permission.php
public function roles()
{
    return $this->belongsToMany('AppRole');
}
Salin selepas log masuk

4. Peranan dan permission middleware

Untuk mencapai kawalan kebenaran berbilang peringkat, kami perlu mencipta middleware untuk mengesahkan sama ada pengguna mempunyai kebenaran yang sepadan. Middleware boleh dibuat menggunakan arahan make:middleware Laravel.

php artisan make:middleware CheckRolePermissions
Salin selepas log masuk

Buka perisian tengah CheckRolePermissions dan tulis logik pengesahan kebenaran dalam kaedah pemegang.

public function handle($request, Closure $next, $permission)
{
    // 获取当前登录用户的角色
    $roles = auth()->user()->roles;

    foreach ($roles as $role) {
        // 验证当前角色是否拥有指定权限
        if ($role->permissions->contains('slug', $permission)) {
            return $next($request);
        }
    }

    abort(403, 'Unauthorized');
}
Salin selepas log masuk

5. Gunakan middleware untuk mengesahkan kebenaran

Kini kita boleh menggunakan middleware CheckRolePermissions untuk mengesahkan kebenaran dalam laluan yang perlu mengawal kebenaran.

Route::group(['middleware' => 'auth'], function () {
    Route::get('/admin', 'AdminController@index')->middleware('role:admin');
    Route::get('/editor', 'EditorController@index')->middleware('role:editor');
    Route::get('/reader', 'ReaderController@index')->middleware('role:reader');
});
Salin selepas log masuk

6. Berikan peranan dan kebenaran kepada pengguna

Untuk membolehkan pengguna mempunyai peranan dan kebenaran yang sepadan, kami perlu menyediakan borang yang sepadan pada halaman pendaftaran atau penyuntingan pengguna. Dalam borang kita boleh memilih peranan dan kebenaran untuk pengguna.

7. Ringkasan

Melalui langkah di atas, kami boleh melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel. Dengan mencipta jadual peranan dan kebenaran, mewujudkan persatuan model, dan mencipta perisian tengah dan perisian tengah aplikasi, kami boleh mencapai tahap kawalan kebenaran yang berbeza. Dengan cara ini, kami boleh menetapkan peranan dan kebenaran yang berbeza kepada pengguna yang berbeza untuk memastikan keselamatan dan fleksibiliti sistem.

Di atas ialah contoh kod khusus tentang cara melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel. Dengan memahami dan menggunakan konsep ini, kami boleh mengurus dan mengawal kebenaran pengguna dengan lebih berkesan apabila membangunkan aplikasi web.

Sila ambil perhatian bahawa artikel ini hanya menyediakan contoh kod Dalam pembangunan sebenar, pengubahsuaian dan pengoptimuman yang sesuai perlu dibuat mengikut keperluan tertentu. Harap artikel ini membantu anda!

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kawalan kebenaran berbilang peringkat dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Laravel - Perintah Artisan Laravel - Perintah Artisan Aug 27, 2024 am 10:51 AM

Laravel - Perintah Artisan - Laravel 5.7 hadir dengan cara baharu untuk merawat dan menguji arahan baharu. Ia termasuk ciri baharu untuk menguji arahan artisan dan demonstrasi disebut di bawah?

Laravel - Konsol Artisan Laravel - Konsol Artisan Aug 27, 2024 am 10:51 AM

Laravel - Artisan Console - Rangka kerja Laravel menyediakan tiga alat utama untuk interaksi melalui baris arahan iaitu: Artisan, Ticker dan REPL. Bab ini menerangkan tentang Artisan secara terperinci.

Laravel - Penyesuaian Penomboran Laravel - Penyesuaian Penomboran Aug 27, 2024 am 10:51 AM

Laravel - Penyesuaian Penomboran - Laravel termasuk ciri penomboran yang membantu pengguna atau pembangun menyertakan ciri penomboran. Paginator Laravel disepadukan dengan pembina pertanyaan dan ORM Fasih. Kaedah penomboran automatik

Bagaimana untuk mendapatkan kod pengembalian semasa menghantar e -mel gagal di Laravel? Bagaimana untuk mendapatkan kod pengembalian semasa menghantar e -mel gagal di Laravel? Apr 01, 2025 pm 02:45 PM

Kaedah untuk mendapatkan kod kembali apabila menghantar e -mel Laravel gagal. Apabila menggunakan Laravel untuk membangunkan aplikasi, anda sering menghadapi situasi di mana anda perlu menghantar kod pengesahan. Dan pada hakikatnya ...

Tugas Jadual Laravel tidak dilaksanakan: Apa yang harus saya lakukan jika tugas itu tidak berjalan selepas Jadual: Jalankan Perintah? Tugas Jadual Laravel tidak dilaksanakan: Apa yang harus saya lakukan jika tugas itu tidak berjalan selepas Jadual: Jalankan Perintah? Mar 31, 2025 pm 11:24 PM

Tugas Jadual Laravel menjalankan penyelesaian masalah yang tidak responsif semasa menggunakan penjadualan tugas jadual Laravel, banyak pemaju akan menghadapi masalah ini: Jadual: Jalankan ...

Di Laravel, bagaimana menangani situasi di mana kod pengesahan gagal dihantar melalui e -mel? Di Laravel, bagaimana menangani situasi di mana kod pengesahan gagal dihantar melalui e -mel? Mar 31, 2025 pm 11:48 PM

Kaedah mengendalikan kegagalan e -mel Laravel untuk menghantar kod pengesahan adalah menggunakan Laravel ...

Bagaimana untuk melaksanakan fungsi jadual tersuai untuk mengklik untuk menambah data dalam admin dcat? Bagaimana untuk melaksanakan fungsi jadual tersuai untuk mengklik untuk menambah data dalam admin dcat? Apr 01, 2025 am 07:09 AM

Cara melaksanakan fungsi jadual klik tersuai untuk menambah data dalam dcatadmin (laravel-admin) semasa menggunakan dcat ...

Laravel - Pelayan Buang Laravel - Pelayan Buang Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Laravel dump server datang dengan versi Laravel 5.7. Versi sebelumnya tidak termasuk pelayan dump. Pelayan dump akan menjadi kebergantungan pembangunan dalam fail komposer laravel/laravel.

See all articles