Rumah > rangka kerja php > Laravel > teks badan

Cara menggunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API

王林
Lepaskan: 2023-11-04 13:23:03
asal
1130 orang telah melayarinya

Cara menggunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API

Cara menggunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API

Pengenalan:
Dengan perkembangan pesat aplikasi web dan antara muka API, keperluan untuk pengurusan kebenaran telah menjadi semakin jelas. Sebagai rangka kerja pembangunan PHP yang popular, Laravel mempunyai fungsi pengurusan kebenaran yang berkuasa terbina dalam, yang boleh mengurus dan mengawal kebenaran antara muka API dengan mudah. Artikel ini akan menerangkan secara terperinci cara menggunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API dan memberikan contoh kod yang berkaitan.

1. Pasang dan konfigurasikan fungsi kebenaran Laravel:

  1. Pertama, kita perlu menggunakan Komposer untuk memasang pemalam pengurusan kebenaran Laravel Spatie-Permission. Jalankan arahan berikut dalam terminal untuk memasang pemalam:

    composer require spatie/laravel-permission
    Salin selepas log masuk
  2. Selepas pemasangan selesai, anda perlu menambah ServiceProvider pada tatasusunan penyedia dalam fail config/app.php untuk mendayakan pemalam. Buka fail dan tambah baris berikut:

    'providers' => [
     // ...
     SpatiePermissionPermissionServiceProvider::class,
    ],
    Salin selepas log masuk
  3. Seterusnya, jalankan arahan berikut dalam terminal untuk menerbitkan fail konfigurasi pemalam dan fail pemindahan pangkalan data:

    php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider"
    Salin selepas log masuk
  4. Jalankan arahan migrasi pangkalan data untuk mencipta kebenaran yang diperlukan berkaitan jadual:

    php artisan migrate
    Salin selepas log masuk
  5. Selepas melengkapkan langkah di atas, kami telah berjaya memasang dan mengkonfigurasi fungsi kebenaran Laravel.

2. Gunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API:

  1. Buat fail penghalaan yang berkaitan dengan antara muka API:
    Tentukan laluan antara muka API kami dalam fail route/api.php, contohnya:

    Route::middleware('auth:api')->group(function () {
     Route::get('/user', 'UserController@index')->name('api.user.index')->middleware('permission:view-users');
     Route::post('/user', 'UserController@store')->name('api.user.store')->middleware('permission:create-users');
     Route::put('/user/{id}', 'UserController@update')->name('api.user.update')->middleware('permission:update-users');
     Route::delete('/user/{id}', 'UserController@destroy')->name('api.user.destroy')->middleware('permission:delete-users');
    });
    Salin selepas log masuk

    contoh di atas , kami menggunakan dua middleware, auth:api digunakan untuk mengesahkan identiti pengguna dan permission:xxx digunakan untuk mengesahkan sama ada pengguna mempunyai kebenaran yang sepadan. auth:api用于验证用户的身份,permission:xxx用于验证用户是否具有对应的权限。

  2. 在User模型中关联权限角色:
    在User模型中使用Laravel的HasRolestrait来关联权限角色。在app/User.php文件中添加以下行:

    use SpatiePermissionTraitsHasRoles;
    
    class User extends Authenticatable
    {
     use HasApiTokens, HasFactory, Notifiable, HasRoles;
     
     // ...
    }
    Salin selepas log masuk
  3. 在AuthServiceProvider中定义权限:
    在app/Providers/AuthServiceProvider.php文件的boot方法中,使用Laravel的Gate类定义API接口的权限。例如:

    use IlluminateContractsAuthAccessGate;
    
    class AuthServiceProvider extends ServiceProvider
    {
     public function boot(Gate $gate)
     {
         $this->registerPolicies();
         
         $gate->define('view-users', function ($user) {
             return $user->hasPermissionTo('view-users');
         });
    
         $gate->define('create-users', function ($user) {
             return $user->hasPermissionTo('create-users');
         });
    
         $gate->define('update-users', function ($user, $id) {
             return $user->hasPermissionTo('update-users') && $user->id === $id;
         });
    
         $gate->define('delete-users', function ($user, $id) {
             return $user->hasPermissionTo('delete-users') && $user->id === $id;
         });
     }
    }
    Salin selepas log masuk

    以上示例中,我们使用了Laravel的Gate类来定义权限。具体的权限名称可以根据实际需求进行定义和命名。

  4. 给用户分配权限:
    使用Laravel的assignRolesyncPermissions

    Kaitkan peranan kebenaran dalam model Pengguna:
  5. Gunakan sifat HasRoles Laravel dalam model Pengguna untuk mengaitkan peranan kebenaran. Tambahkan baris berikut dalam fail app/User.php:
public function store(Request $request)
{
 // 创建用户...
 
 // 给用户分配角色
 $user->assignRole('admin');

 // 给用户分配权限
 $user->syncPermissions(['view-users', 'create-users', 'update-users', 'delete-users']);

 // ...
}
Salin selepas log masuk


Tentukan kebenaran dalam AuthServiceProvider: 🎜Dalam kaedah boot apl/Providers/AuthServiceProvider.php fail, gunakan Laravel's Gate mentakrifkan kebenaran antara muka API. Contohnya: 🎜rrreee🎜Dalam contoh di atas, kami menggunakan kelas Gate Laravel untuk mentakrifkan kebenaran. Nama kebenaran khusus boleh ditakrifkan dan dinamakan mengikut keperluan sebenar. 🎜🎜🎜🎜Berikan kebenaran kepada pengguna: 🎜Gunakan kaedah assignRole dan syncPermissions Laravel untuk memberikan kebenaran kepada pengguna. Sebagai contoh, dalam kaedah stor fail UserController.php, kami boleh memberikan kebenaran kepada pengguna seperti ini: 🎜rrreee🎜Dalam contoh di atas, kami memberikan pengguna peranan bernama 'admin' dan memberikan empat kebenaran kepada peranan . 🎜🎜🎜🎜 3. Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API dan menyediakan contoh kod yang berkaitan. Dengan mengkonfigurasi dan menggunakan fungsi kebenaran Laravel, kami boleh melaksanakan pengurusan kebenaran dan kawalan antara muka API dengan mudah. Semoga artikel ini bermanfaat kepada anda. 🎜

Atas ialah kandungan terperinci Cara menggunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan