Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk menetapkan kebenaran latar belakang dalam laravel (langkah terperinci)

Bagaimana untuk menetapkan kebenaran latar belakang dalam laravel (langkah terperinci)

PHPz
PHPzasal
2023-04-03 19:20:481279semak imbas

Laravel ialah rangka kerja PHP popular yang menyediakan pembangun dengan banyak kemudahan dan alatan untuk mempercepatkan proses pembangunan. Satu ciri yang amat berguna ialah sistem kebenaran pengurusan bahagian belakangnya. Dengan menetapkan kebenaran bahagian belakang Laravel, anda memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses antara muka pentadbir aplikasi anda. Dalam artikel ini, kami akan membincangkan cara menetapkan kebenaran latar belakang dalam Laravel.

Langkah 1: Pasang pakej perisian yang diperlukan

Menetapkan kebenaran latar belakang dalam Laravel memerlukan pemasangan pakej perisian berikut:

  • Rangka Kerja Laravel
  • Laravel Kebenaran

Kebenaran Laravel ialah pakej pengurusan kebenaran popular yang memudahkan untuk menambah sistem kebenaran pada aplikasi anda. Anda boleh memasangnya ke dalam projek Laravel anda melalui pengurus pakej komposer dengan arahan berikut:

composer require spatie/laravel-permission

Selepas pemasangan selesai, anda perlu menambah pembekal perkhidmatan dan fasad dalam config/app.php:

'providers' => [
    ...
    Spatie\Permission\PermissionServiceProvider::class,
],

'aliases' => [
    ...
    'Permission' => Spatie\Permission\Models\Permission::class,
    'Role' => Spatie\Permission\Models\Role::class,
],

Langkah Kedua: Buat Laluan dan Pengawal

Sekarang, anda perlu mencipta satu set laluan dan pengawal untuk mengurus kebenaran aplikasi. Anda boleh mentakrifkan laluan ini dalam fail laluan web, contohnya:

Route::group(['middleware' => ['auth']], function () {

    // 管理角色和权限
    Route::resource('roles', 'RoleController');
    Route::resource('permissions', 'PermissionController');

    // 管理用户角色分配
    Route::resource('users', 'UserController');
    Route::post('users/{user}/assign-roles', 'UserController@assignRoles')->name('users.assign.roles');
    Route::delete('users/{user}/remove-roles/{role}', 'UserController@removeRoles')->name('users.remove.roles');

});

Dalam contoh ini, kami mempunyai empat laluan berbeza yang ditakrifkan:

  • roles: untuk Urus peranan dalam permohonan itu.
  • permissions: Digunakan untuk mengurus kebenaran dalam aplikasi.
  • users: Digunakan untuk mengurus pengguna dalam aplikasi dan menetapkan peranan kepada mereka.
  • assign-roles dan remove-roles: digunakan untuk menetapkan dan mengalih keluar peranan daripada pengguna dalam aplikasi.

Seterusnya, cipta pengawal, contohnya:

php artisan make:controller RoleController

Dalam pengawal, anda perlu menulis kaedah yang sepadan dengan laluan. Contohnya, apabila pengguna mengakses laluan roles, Laravel akan memanggil kaedah RoleController dalam index:

public function index()
{
    $roles = Role::paginate(10);

    return view('roles.index', compact('roles'));
}

Ini akan mengembalikan paparan yang mengandungi senarai peranan dan menggunakan laluan bersarang Laravel yang dihantar semula ke penyemak imbas. Dalam paparan, anda menggunakan enjin templat Laravel Blade untuk memberikan data dan memaparkan borang dan butang kepada pengguna jika perlu.

Langkah Tiga: Tentukan Kebenaran Aplikasi

Untuk menyekat akses pengguna ke kawasan pentadbir aplikasi, anda perlu menentukan peranan yang boleh melaksanakan tindakan mana. Sebagai contoh, anda boleh menetapkan peranan Pentadbir kepada pengguna dengan akses penuh dan peranan Editor, yang hanya boleh mengedit artikel, kepada set pengguna yang lain.

Dalam pakej Kebenaran Laravel, anda boleh menggunakan model Permission dan Role untuk mentakrif dan mengurus kebenaran ini. Contohnya, untuk membuat kebenaran yang dipanggil "Edit Catatan" anda akan menggunakan kod berikut:

use Spatie\Permission\Models\Permission;

$editArticles = Permission::create(['name' => 'edit articles']);

Ini akan mencipta kebenaran baharu dan menyimpannya dalam pangkalan data. Kini anda boleh menetapkannya kepada mana-mana peranan lain seperti Pentadbir atau Editor.

Langkah 4: Gunakan middleware untuk menjamin laluan

Kini, anda perlu menggunakan authmiddleware untuk menyekat akses kepada laluan pengurusan. Perisian tengah ini akan memastikan pengguna mesti log masuk untuk mengakses laluan yang dilindungi.

Anda boleh menggunakan kaedah Route::group Laravel untuk membungkus definisi laluan anda dan menggunakan perisian tengah kepada keseluruhan kumpulan:

Route::group(['middleware' => ['auth']], function () {
    // 受保护的路由
});

Kini, hanya pengguna yang telah disahkan boleh mengakses laluan ini .

Langkah Lima: Gunakan Kebenaran Laravel untuk Mengizinkan Akses

Akhir sekali, anda perlu menggunakan pakej Kebenaran Laravel untuk mengawal peranan yang boleh melaksanakan operasi tertentu. Contohnya, untuk memastikan bahawa hanya pengguna yang mempunyai kebenaran "Edit Artikel" boleh mengedit artikel dalam apl anda, anda boleh menggunakan kod berikut:

if(auth()->user()->can('edit articles')){
    // 可以编辑文章
} else {
    // 无权限
}

Coretan kod ini menyemak sama ada pengguna yang disahkan pada masa ini mempunyai " Edit Artikel" kebenaran. Jika pengguna mempunyai kebenaran, dia boleh melakukan operasi yang berkaitan. Jika tidak, mereka tidak akan mempunyai kuasa untuk membuat sebarang perubahan.

Kesimpulan

Menyediakan kebenaran pentadbir bahagian belakang dalam Laravel memerlukan beberapa langkah, tetapi apabila anda sudah biasa dengannya, anda boleh mengawal dengan mudah pengguna mana yang boleh melakukan tindakan menggunakan pakej Kebenaran Laravel. Dengan cara ini, anda memastikan bahawa hanya pengguna yang dibenarkan mempunyai akses ke kawasan pengurusan aplikasi anda, dengan itu melindungi keselamatan data anda dan mengurangkan risiko keselamatan.

Atas ialah kandungan terperinci Bagaimana untuk menetapkan kebenaran latar belakang dalam laravel (langkah terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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