Penjelasan terperinci tentang fungsi kebenaran Laravel: Bagaimana untuk menentukan dan mengurus peranan pengguna, contoh kod khusus diperlukan
Dalam pembangunan web moden, reka bentuk dan pengurusan fungsi kebenaran adalah bahagian yang sangat penting. Pengguna yang berbeza mungkin mempunyai kebenaran yang berbeza, jadi kami memerlukan sistem kebenaran yang fleksibel dan mudah diselenggara untuk memenuhi keperluan ini. Rangka kerja Laravel menyediakan set fungsi kebenaran yang berkuasa yang boleh membantu kami mentakrif dan mengurus peranan pengguna Artikel ini akan memperkenalkan fungsi ini secara terperinci dan menyediakan beberapa contoh kod tertentu.
Dalam Laravel, pelaksanaan fungsi kebenaran bergantung terutamanya pada dua konsep teras: peranan (Peranan) dan kebenaran (Kebenaran). Peranan ialah satu set kebenaran, dan kebenaran ialah operasi atau fungsi tertentu. Pengguna boleh diberikan satu atau lebih peranan untuk mendapatkan kebenaran yang sepadan.
Pertama, kita perlu menentukan peranan dan kebenaran. Dalam Laravel, anda boleh menggunakan jadual pangkalan data untuk menyimpan maklumat ini, atau anda boleh menggunakan fail konfigurasi. Di sini kita menggunakan jadual pangkalan data. Mula-mula, kita perlu mencipta jadual peranan untuk menyimpan maklumat peranan Anda boleh menggunakan alat baris arahan Artisan Laravel untuk menjana fail pemindahan:
php artisan make:migration create_roles_table --create=roles
Kemudian, dalam fail pemindahan yang dijana, tambahkan maklumat medan yang sepadan:
public function up() { Schema::create('roles', function(Blueprint $table) { $table->id(); $table->string('name'); $table->string('description')->nullable(); $table->timestamps(); }); }
Seterusnya, Kami perlu membuat jadual kebenaran untuk menyimpan maklumat kebenaran Kami juga boleh menggunakan perintah Artisan untuk menjana fail migrasi:
php artisan make:migration create_permissions_table --create=permissions
Tambah maklumat medan dalam fail migrasi:
public function up() { Schema::create('permissions', function(Blueprint $table) { $table->id(); $table->string('name'); $table->string('description')->nullable(); $table->timestamps(); }); }
Kini, kami telah berjaya menentukan struktur data peranan. dan kebenaran. Seterusnya, kita perlu mewujudkan hubungan antara mereka. Laravel menyediakan cara mudah untuk mentakrifkan perhubungan banyak-ke-banyak menggunakan jadual perantaraan. Kami boleh membuat jadual role_permission untuk mengurus hubungan antara peranan dan kebenaran:
php artisan make:migration create_role_permission_table --create=role_permission
Tambah maklumat medan dalam fail pemindahan:
public function up() { Schema::create('role_permission', function(Blueprint $table) { $table->foreignId('role_id')->constrained(); $table->foreignId('permission_id')->constrained(); $table->timestamps(); }); }
Kini, kami telah berjaya menentukan hubungan antara peranan dan kebenaran.
Seterusnya, kita perlu melaksanakan fungsi mengurus peranan dan kebenaran dalam kod. Pertama, kita perlu mentakrifkan dua kelas model: Role.php dan Permission.php, yang masing-masing sepadan dengan jadual peranan dan jadual kebenaran. Dalam kedua-dua kelas model ini, kita perlu menentukan perkaitan antara mereka. Dalam Role.php, kita boleh mentakrifkan perkaitan seperti ini:
public function permissions() { return $this->belongsToMany(Permission::class); }
Dalam Permission.php, kita boleh mentakrifkan perkaitan seperti ini:
public function roles() { return $this->belongsToMany(Role::class); }
Seterusnya, kita boleh menggunakan alat baris arahan Laravel untuk menjana kelas pengawal yang sepadan dan Lihat fail untuk melaksanakan fungsi mengurus peranan dan kebenaran. Berikut ialah kod sampel:
// app/Http/Controllers/Admin/RoleController.php namespace AppHttpControllersAdmin; use AppHttpControllersController; use AppModelsRole; use IlluminateHttpRequest; class RoleController extends Controller { public function index() { $roles = Role::all(); return view('admin.roles.index', ['roles' => $roles]); } public function create() { $permissions = Permission::all(); return view('admin.roles.create', ['permissions' => $permissions]); } public function store(Request $request) { $role = new Role; $role->name = $request->input('name'); $role->description = $request->input('description'); $role->save(); $role->permissions()->attach($request->input('permissions')); return redirect()->route('roles.index'); } public function edit($id) { $role = Role::find($id); $permissions = Permission::all(); return view('admin.roles.edit', ['role' => $role, 'permissions' => $permissions]); } public function update(Request $request, $id) { $role = Role::find($id); $role->name = $request->input('name'); $role->description = $request->input('description'); $role->save(); $role->permissions()->sync($request->input('permissions')); return redirect()->route('roles.index'); } public function destroy($id) { $role = Role::find($id); $role->permissions()->detach(); $role->delete(); return redirect()->route('roles.index'); } }
Di atas ialah kelas pengawal pengurusan peranan yang mudah, termasuk senarai peranan, penciptaan, penyuntingan, pemadaman dan fungsi lain. Enjin templat Blade boleh digunakan dalam fail paparan untuk memaparkan halaman, dan kami boleh memanjangkannya mengikut keperluan kami.
Di atas ialah pengenalan terperinci tentang cara mentakrif dan mengurus peranan pengguna, dan juga menyediakan beberapa contoh kod khusus. Dengan menggunakan fungsi kebenaran yang disediakan oleh Laravel, kami boleh dengan mudah melaksanakan sistem kebenaran yang fleksibel dan mudah diselenggara untuk menambah keselamatan yang lebih tinggi pada aplikasi web kami. Harap artikel ini membantu anda!
Atas ialah kandungan terperinci Penjelasan terperinci tentang fungsi kebenaran Laravel: cara mentakrif dan mengurus peranan pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!