Rumah > Artikel > rangka kerja php > Ciri lanjutan fungsi kebenaran Laravel: cara melaksanakan kawalan kebenaran berbilang dimensi
Ciri lanjutan fungsi kebenaran Laravel: Cara melaksanakan kawalan kebenaran berbilang dimensi memerlukan contoh kod khusus
Pengenalan:
Apabila kerumitan perniagaan meningkat, kawalan kebenaran memainkan peranan penting dalam aplikasi web . Laravel, sebagai rangka kerja PHP yang popular, memberikan kami fungsi kebenaran yang berkuasa dan fleksibel. Selain peranan asas dan pengurusan kebenaran, Laravel juga menyokong kawalan kebenaran berbilang dimensi, yang membenarkan kawalan kebenaran terperinci berdasarkan pengguna, peranan, sumber dan operasi. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan kawalan kebenaran berbilang dimensi dan memberikan contoh kod khusus.
1. Pengguna dan peranan
Dalam Laravel, pengguna dan peranan adalah asas kawalan kebenaran. Kami boleh mencipta pengguna dan peranan melalui sistem pengesahan pengguna Laravel sendiri, atau kami boleh menyesuaikan model pengguna dan model peranan.
Pertama, kita perlu mencipta jadual pengguna. Anda boleh menggunakan sistem pengesahan pengguna Laravel sendiri dan laksanakan arahan berikut untuk menjana fail migrasi:
php artisan make:auth
Laksanakan migrasi:
php artisan migrate
Kemudian, kita perlu mencipta jadual peranan. Anda boleh melaksanakan perintah berikut untuk menjana fail migrasi:
php artisan make:migration create_roles_table --create=roles
Dalam fail migrasi yang dijana, kami menambah medan yang sepadan, seperti: nama, nama_pameran dan perihalan. Kemudian lakukan migrasi:
php artisan migrate
Seterusnya, kita perlu membuat perkaitan dalam model pengguna dan model peranan. Takrifkan kaedah roles() dalam model pengguna:
public function roles() { return $this->belongsToMany('AppRole'); }
Takrifkan kaedah users() dalam model peranan:
public function users() { return $this->belongsToMany('AppUser'); }
Melalui langkah di atas, kami telah mewujudkan hubungan antara pengguna dan peranan.
2. Sumber dan operasi
Dalam kawalan kebenaran berbilang dimensi, sumber dan operasi digunakan untuk menerangkan skop kebenaran yang perlu kita kawal. Dalam Laravel, kita boleh menggunakan dasar untuk menentukan sumber dan operasi.
Pertama, kita perlu membuat kelas strategi. Anda boleh melaksanakan perintah berikut untuk menjana kelas dasar:
php artisan make:policy PostPolicy --model=Post
Di sini, mengambil model sumber sebagai Pos sebagai contoh, kelas dasar bernama PostPolicy dijana.
Dalam kelas dasar, kami boleh menentukan kaedah kebenaran biasa, seperti lihat, cipta, kemas kini dan padam. Contohnya, untuk mengawal sama ada pengguna boleh melihat siaran:
public function view(User $user, Post $post) { // 可以根据$user和$post的属性进行自定义权限控制 return $user->id === $post->user_id; }
Kami juga boleh menentukan tingkah laku lalai kaedah kebenaran, iaitu, apabila tiada kaedah kebenaran ditentukan untuk operasi, Laravel akan memanggil kaedah before
dasar kelas. Contohnya, untuk menyekat semua pengguna daripada log masuk semasa memadamkan siaran:
public function before(User $user) { if ($user->isAdmin()) { return true; // 管理员拥有所有权限 } }
Dengan langkah di atas, kami telah mencipta dasar untuk sumber dan tindakan.
3. Kawalan kebenaran berbilang dimensi
Dengan perhubungan antara pengguna dan peranan, serta strategi sumber dan operasi, kami boleh mencapai kawalan kebenaran berbilang dimensi.
Pertama, kita perlu mengaitkan strategi dalam model peranan. Anda boleh menambah kaedah polisi() dalam model peranan:
public function policies() { return $this->belongsToMany('AppPolicy'); }
Kemudian, kaitkan peranan dalam model dasar. Anda boleh menambah kaedah roles() pada model dasar:
public function roles() { return $this->belongsToMany('AppRole'); }
Seterusnya, kami boleh melakukan pengesahan kebenaran dalam pengawal atau laluan. Contohnya, untuk menyemak sama ada pengguna mempunyai kebenaran untuk mengedit siaran:
if ($user->can('update', $post)) { // 用户有权编辑帖子,继续执行 } else { // 用户无权编辑帖子,返回错误页面 }
Dalam contoh ini, kaedah boleh mengesahkan kebenaran berdasarkan pengguna, dasar dan sumber. Laravel akan mencari peranan pengguna dan dasar peranan secara automatik, kemudian memanggil kaedah kebenaran yang sepadan dalam dasar untuk menentukan kebenaran.
4. Contoh Kod
Contoh kod lengkap diberikan di bawah untuk mencapai kawalan kebenaran berbilang dimensi.
Mula-mula, cipta model bernama Role, dan tentukan kaedah roles di dalamnya:
class Role extends Model { public function policies() { return $this->belongsToMany('AppPolicy'); } public function users() { return $this->belongsToMany('AppUser'); } }
Kemudian, buat model bernama Policy, dan tentukan kaedah polisi di dalamnya:
class Policy extends Model { public function roles() { return $this->belongsToMany('AppRole'); } }
Seterusnya, kita boleh menambahkannya pada controller Perform pengesahan kebenaran dalam:
class PostController extends Controller { public function update(Request $request, Post $post) { $this->authorize('update', $post); // 继续执行更新操作 } }
Dalam contoh ini, kami menggunakan kaedah kebenaran untuk melaksanakan pengesahan kebenaran. Laravel akan mencari dasar yang sepadan secara automatik berdasarkan pengguna dan sumber, dan memanggil kaedah kebenaran yang sepadan dalam dasar.
Kesimpulan:
Fungsi kebenaran Laravel menyediakan kawalan kebenaran berbilang dimensi yang fleksibel dan berkuasa, yang boleh memenuhi pelbagai keperluan perniagaan yang kompleks. Melalui dasar perkaitan pengguna dan peranan, sumber dan operasi, kami boleh mencapai kawalan kebenaran berbilang dimensi yang terperinci. Saya harap artikel ini dapat membantu pembaca memahami dan menggunakan fungsi kebenaran Laravel serta meningkatkan keselamatan dan kebolehselenggaraan aplikasi web.
Atas ialah kandungan terperinci Ciri lanjutan fungsi kebenaran Laravel: cara melaksanakan kawalan kebenaran berbilang dimensi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!