Rumah > Artikel > rangka kerja php > 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:
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
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, ],
Seterusnya, jalankan arahan berikut dalam terminal untuk menerbitkan fail konfigurasi pemalam dan fail pemindahan pangkalan data:
php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider"
Jalankan arahan migrasi pangkalan data untuk mencipta kebenaran yang diperlukan berkaitan jadual:
php artisan migrate
2. Gunakan fungsi kebenaran Laravel untuk mengurus kebenaran antara muka API:
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'); });
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
用于验证用户是否具有对应的权限。
在User模型中关联权限角色:
在User模型中使用Laravel的HasRoles
trait来关联权限角色。在app/User.php文件中添加以下行:
use SpatiePermissionTraitsHasRoles; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, HasRoles; // ... }
在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; }); } }
以上示例中,我们使用了Laravel的Gate
类来定义权限。具体的权限名称可以根据实际需求进行定义和命名。
给用户分配权限:
使用Laravel的assignRole
和syncPermissions
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']); // ... }
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!