Rumah rangka kerja php Laravel Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul

Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul

Nov 02, 2023 pm 12:32 PM
laravel amalan terbaik Kawalan kebenaran

Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul

Amalan terbaik untuk fungsi kebenaran Laravel: Cara mengawal kebenaran pengguna dengan betul, contoh kod khusus diperlukan

Pengenalan:

Laravel ialah rangka kerja PHP yang sangat berkuasa dan popular yang menyediakan banyak fungsi dan alatan untuk membantu kami membangunkan Cekap dan aplikasi web selamat. Satu ciri penting ialah kawalan kebenaran, yang menyekat akses pengguna ke bahagian aplikasi yang berbeza berdasarkan peranan dan kebenaran mereka.

Kawalan kebenaran yang betul ialah komponen utama mana-mana aplikasi web untuk melindungi data dan fungsi sensitif daripada diakses oleh pengguna yang tidak dibenarkan. Dalam artikel ini, kami akan membincangkan amalan terbaik untuk kawalan kebenaran dalam Laravel dan memberikan contoh kod konkrit.

1. Pasang dan sediakan fungsi kebenaran Laravel

Mula-mula, kita perlu memasang dan menyediakan fungsi kebenaran dalam Laravel. Kita boleh menggunakan arahan terbina dalam Laravel untuk menyelesaikan tugas ini. Buka terminal dan jalankan arahan berikut:

composer require laravel/ui
php artisan ui bootstrap --auth
Salin selepas log masuk

Arahan di atas akan memasang pek antara muka pengguna Laravel dan menjana pengesahan asas dan pengawal pendaftaran.

Seterusnya, kita perlu mencipta jadual bernama roles dalam pangkalan data untuk menyimpan maklumat peranan pengguna. Kita boleh menggunakan alat migrasi yang disediakan oleh Laravel untuk menyelesaikan tugas ini. Jalankan arahan berikut: roles 的表,以保存用户角色的信息。我们可以使用Laravel提供的迁移工具来完成这个任务。运行以下命令:

php artisan make:migration create_roles_table --create=roles
Salin selepas log masuk

运行上述命令后,Laravel 将在 database/migrations 文件夹中生成一个新的迁移文件。打开该文件并更新 up 方法,如下所示:

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateRolesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('roles', function (Blueprint $table) {
            $table->id();
            $table->string('name')->unique();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('roles');
    }
}
Salin selepas log masuk

保存并关闭文件后,运行以下命令来执行迁移文件:

php artisan migrate
Salin selepas log masuk

现在,我们已经完成了 Laravel 的授权功能的设置。

二、定义用户和角色模型

接下来,我们需要定义用户和角色模型,并在它们之间建立关系。

首先,我们需要创建一个 Role 模型。运行以下命令来生成模型文件:

php artisan make:model Role
Salin selepas log masuk
Salin selepas log masuk

接下来,我们需要在 Role 模型中添加与用户的关联。打开 app/Role.php 文件并将以下代码添加到类中:

public function users()
{
    return $this->hasMany(User::class);
}
Salin selepas log masuk

接下来,我们需要创建 User 模型。运行以下命令来生成模型文件:

php artisan make:model User
Salin selepas log masuk

然后,我们需要在 User 模型中添加与角色的关联。打开 app/User.php 文件并将以下代码添加到类中:

public function role()
{
    return $this->belongsTo(Role::class);
}
Salin selepas log masuk
Salin selepas log masuk

保存并关闭文件后,在 terminal 中运行以下命令来确保 User 模型与 users 数据表进行关联:

composer dump-autoload
Salin selepas log masuk
Salin selepas log masuk

我们已经成功定义了用户和角色模型,并建立了它们之间的关系。

三、定义用户访问控制方法

现在,我们需要定义一些用户访问控制方法,以便在应用程序中进行权限检查。

首先,我们需要定义一个 hasPermission 方法来检查用户是否具有特定的权限。打开 app/User.php 文件,并在 User 类中添加以下方法:

public function hasPermission($permission)
{
    return $this->role->permissions()->where('name', $permission)->exists();
}
Salin selepas log masuk

接下来,我们需要定义一个 role 方法来检查用户的角色。打开 app/User.php 文件,并在 User 类中添加以下方法:

public function role()
{
    return $this->belongsTo(Role::class);
}
Salin selepas log masuk
Salin selepas log masuk

保存并关闭文件后,我们已经成功定义了用于用户访问控制的方法。

四、定义角色和权限模型

接下来,我们需要定义角色和权限模型,并在它们之间建立关系。

首先,我们需要创建一个 Permission 模型。运行以下命令来生成模型文件:

php artisan make:model Permission
Salin selepas log masuk

接下来,我们需要在 Permission 模型中添加与角色的关联。打开 app/Permission.php 文件并将以下代码添加到类中:

public function roles()
{
    return $this->belongsToMany(Role::class);
}
Salin selepas log masuk

接下来,我们需要创建一个 Role 模型。运行以下命令来生成模型文件:

php artisan make:model Role
Salin selepas log masuk
Salin selepas log masuk

然后,我们需要在 Role 模型中添加与权限的关联。打开 app/Role.php 文件并将以下代码添加到类中:

public function permissions()
{
    return $this->belongsToMany(Permission::class);
}
Salin selepas log masuk

保存并关闭文件后,运行以下命令来确保模型与对应的数据表进行关联:

composer dump-autoload
Salin selepas log masuk
Salin selepas log masuk

我们已经成功定义了角色和权限模型,并建立了它们之间的关系。

五、定义访问控制中间件

最后,我们需要定义一个访问控制中间件,以便在访问受限制的路由时进行权限检查。

首先,我们需要在 app/Http/Kernel.php 文件中注册中间件。打开文件并将以下代码添加到 routeMiddleware 数组中:

'permission' => AppHttpMiddlewarePermissionMiddleware::class,
Salin selepas log masuk

接下来,我们需要创建一个 PermissionMiddleware 类。运行以下命令来生成类文件:

php artisan make:middleware PermissionMiddleware
Salin selepas log masuk

然后,我们需要在 PermissionMiddleware 中间件类中实现逻辑来进行权限检查。打开 app/Http/Middleware/PermissionMiddleware.php

public function handle($request, Closure $next, $permission)
{
    $user = Auth::user();

    if (!$user->hasPermission($permission)) {
        abort(403, 'Unauthorized');
    }

    return $next($request);
}
Salin selepas log masuk
Salin selepas log masuk

Selepas menjalankan arahan di atas, Laravel akan menjana fail migrasi baharu dalam folder pangkalan data/penghijrahan. Buka fail dan kemas kini kaedah up seperti berikut: 🎜rrreee🎜Selepas menyimpan dan menutup fail, jalankan arahan berikut untuk melaksanakan fail migrasi: 🎜rrreee🎜Sekarang, kami telah melengkapkan fungsi kebenaran bagi Laravel disediakan. 🎜🎜2. Tentukan pengguna dan model peranan🎜🎜Seterusnya, kita perlu mentakrifkan pengguna dan model serta mewujudkan hubungan antara mereka. 🎜🎜Pertama, kita perlu mencipta model Role. Jalankan arahan berikut untuk menjana fail model: 🎜rrreee🎜 Seterusnya, kita perlu menambah perkaitan dengan pengguna dalam model Role. Buka fail app/Role.php dan tambahkan kod berikut pada kelas: 🎜rrreee🎜Seterusnya, kita perlu mencipta model User. Jalankan arahan berikut untuk menjana fail model: 🎜rrreee🎜 Kemudian, kita perlu menambah perkaitan pada peranan dalam model User. Buka fail app/User.php dan tambahkan kod berikut pada kelas: 🎜rrreee🎜Selepas menyimpan dan menutup fail, jalankan arahan berikut dalam terminal untuk memastikan bahawa User< /code> model sepadan dengan jadual data <code>pengguna untuk mengaitkan: 🎜rrreee🎜Kami telah berjaya menentukan pengguna dan model peranan serta mewujudkan hubungan antara mereka. 🎜🎜3. Tentukan kaedah kawalan akses pengguna 🎜🎜Sekarang, kita perlu menentukan beberapa kaedah kawalan akses pengguna untuk semakan kebenaran dalam aplikasi. 🎜🎜Pertama, kita perlu mentakrifkan kaedah hasPermission untuk menyemak sama ada pengguna mempunyai kebenaran khusus. Buka fail app/User.php dan tambahkan kaedah berikut dalam kelas User: 🎜rrreee🎜Seterusnya, kita perlu mentakrifkan role kaedah untuk menyemak peranan pengguna. Buka fail app/User.php dan tambah kaedah berikut dalam kelas User: 🎜rrreee🎜Selepas menyimpan dan menutup fail, kami telah berjaya menentukan kawalan akses pengguna kaedah. 🎜🎜4. Tentukan peranan dan model kebenaran🎜🎜Seterusnya, kita perlu menentukan peranan dan model kebenaran dan mewujudkan hubungan antara mereka. 🎜🎜Pertama, kita perlu mencipta model Kebenaran. Jalankan arahan berikut untuk menjana fail model: 🎜rrreee🎜 Seterusnya, kita perlu menambah perkaitan pada peranan dalam model Permission. Buka fail app/Permission.php dan tambahkan kod berikut pada kelas: 🎜rrreee🎜Seterusnya, kita perlu mencipta model Role. Jalankan arahan berikut untuk menjana fail model: 🎜rrreee🎜 Kemudian, kita perlu menambah perkaitan dengan kebenaran dalam model Role. Buka fail app/Role.php dan tambahkan kod berikut pada kelas: 🎜rrreee🎜Selepas menyimpan dan menutup fail, jalankan arahan berikut untuk memastikan model dikaitkan dengan jadual data yang sepadan : 🎜rrreee🎜us Peranan dan model kebenaran telah berjaya ditakrifkan dan perhubungan antara mereka diwujudkan. 🎜🎜5. Tentukan perisian tengah kawalan akses🎜🎜Akhir sekali, kita perlu menentukan perisian tengah kawalan akses untuk melakukan semakan kebenaran apabila mengakses laluan terhad. 🎜🎜Pertama, kita perlu mendaftarkan middleware dalam fail app/Http/Kernel.php. Buka fail dan tambahkan kod berikut pada tatasusunan routeMiddleware: 🎜rrreee🎜Seterusnya, kita perlu mencipta kelas PermissionMiddleware. Jalankan arahan berikut untuk menjana fail kelas: 🎜rrreee🎜 Kemudian, kita perlu melaksanakan logik dalam kelas PermissionMiddleware middleware untuk semakan kebenaran. Buka fail app/Http/Middleware/PermissionMiddleware.php dan tambahkan kod berikut pada kelas: 🎜
public function handle($request, Closure $next, $permission)
{
    $user = Auth::user();

    if (!$user->hasPermission($permission)) {
        abort(403, 'Unauthorized');
    }

    return $next($request);
}
Salin selepas log masuk
Salin selepas log masuk

以上代码会检查当前用户是否具有特定的权限。如果用户没有该权限,则会返回 HTTP 403 状态码。

保存并关闭文件后,我们已经成功定义了访问控制中间件。

结束语:

通过本文中的步骤,我们已经了解了 Laravel 中权限控制的最佳实践,以及如何正确控制用户权限。我们在代码示例中演示了如何安装和设置 Laravel 的授权功能,定义用户和角色模型,访问控制方法,角色和权限模型,以及访问控制中间件的实现。

通过正确实现权限控制,我们可以保护敏感数据和功能,并根据用户角色和权限来限制其对应用程序中不同部分的访问。这不仅可以增加应用程序的安全性,还可以提供更好的用户体验。

希望本文能够帮助您理解 Laravel 中权限控制的最佳实践,以及如何正确控制用户权限。通过合理应用这些技术,您可以开发出更安全和高效的Web应用程序。

Atas ialah kandungan terperinci Amalan Terbaik untuk Ciri Keizinan Laravel: Cara Mengawal Kebenaran Pengguna dengan Betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbandingan mendalam: amalan terbaik antara rangka kerja Java dan rangka kerja bahasa lain Perbandingan mendalam: amalan terbaik antara rangka kerja Java dan rangka kerja bahasa lain Jun 04, 2024 pm 07:51 PM

Rangka kerja Java sesuai untuk projek yang merentas platform, kestabilan dan kebolehskalaan adalah penting. Untuk projek Java, Spring Framework digunakan untuk suntikan pergantungan dan pengaturcaraan berorientasikan aspek, dan amalan terbaik termasuk menggunakan SpringBean dan SpringBeanFactory. Hibernate digunakan untuk pemetaan hubungan objek, dan amalan terbaik ialah menggunakan HQL untuk pertanyaan kompleks. JakartaEE digunakan untuk pembangunan aplikasi perusahaan, dan amalan terbaik adalah menggunakan EJB untuk logik perniagaan teragih.

Perbandingan versi terkini Laravel dan CodeIgniter Perbandingan versi terkini Laravel dan CodeIgniter Jun 05, 2024 pm 05:29 PM

Versi terkini Laravel 9 dan CodeIgniter 4 menyediakan ciri dan penambahbaikan yang dikemas kini. Laravel9 menggunakan seni bina MVC dan menyediakan fungsi seperti migrasi pangkalan data, pengesahan dan enjin templat. CodeIgniter4 menggunakan seni bina HMVC untuk menyediakan penghalaan, ORM dan caching. Dari segi prestasi, corak reka bentuk berasaskan pembekal perkhidmatan Laravel9 dan rangka kerja ringan CodeIgniter4 memberikannya prestasi cemerlang. Dalam aplikasi praktikal, Laravel9 sesuai untuk projek kompleks yang memerlukan fleksibiliti dan fungsi berkuasa, manakala CodeIgniter4 sesuai untuk pembangunan pesat dan aplikasi kecil.

Laravel - Perintah Artisan Laravel - Perintah Artisan Aug 27, 2024 am 10:51 AM

Laravel - Perintah Artisan - Laravel 5.7 hadir dengan cara baharu untuk merawat dan menguji arahan baharu. Ia termasuk ciri baharu untuk menguji arahan artisan dan demonstrasi disebut di bawah?

Bagaimanakah keupayaan pemprosesan data dalam Laravel dan CodeIgniter dibandingkan? Bagaimanakah keupayaan pemprosesan data dalam Laravel dan CodeIgniter dibandingkan? Jun 01, 2024 pm 01:34 PM

Bandingkan keupayaan pemprosesan data Laravel dan CodeIgniter: ORM: Laravel menggunakan EloquentORM, yang menyediakan pemetaan hubungan kelas-objek, manakala CodeIgniter menggunakan ActiveRecord untuk mewakili model pangkalan data sebagai subkelas kelas PHP. Pembina pertanyaan: Laravel mempunyai API pertanyaan berantai yang fleksibel, manakala pembina pertanyaan CodeIgniter lebih ringkas dan berasaskan tatasusunan. Pengesahan data: Laravel menyediakan kelas Pengesah yang menyokong peraturan pengesahan tersuai, manakala CodeIgniter mempunyai kurang fungsi pengesahan terbina dalam dan memerlukan pengekodan manual peraturan tersuai. Kes praktikal: Contoh pendaftaran pengguna menunjukkan Lar

Mana satu yang lebih mesra pemula, Laravel atau CodeIgniter? Mana satu yang lebih mesra pemula, Laravel atau CodeIgniter? Jun 05, 2024 pm 07:50 PM

Untuk pemula, CodeIgniter mempunyai keluk pembelajaran yang lebih lembut dan ciri yang lebih sedikit, tetapi meliputi keperluan asas. Laravel menawarkan set ciri yang lebih luas tetapi mempunyai keluk pembelajaran yang lebih curam. Dari segi prestasi, kedua-dua Laravel dan CodeIgniter berprestasi baik. Laravel mempunyai dokumentasi yang lebih luas dan sokongan komuniti yang aktif, manakala CodeIgniter lebih ringkas, ringan dan mempunyai ciri keselamatan yang kukuh. Dalam kes praktikal membina aplikasi blog, EloquentORM Laravel memudahkan manipulasi data, manakala CodeIgniter memerlukan lebih banyak konfigurasi manual.

Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek besar? Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek besar? Jun 04, 2024 am 09:09 AM

Apabila memilih rangka kerja untuk projek besar, Laravel dan CodeIgniter masing-masing mempunyai kelebihan mereka sendiri. Laravel direka untuk aplikasi peringkat perusahaan, menawarkan reka bentuk modular, suntikan pergantungan dan set ciri yang berkuasa. CodeIgniter ialah rangka kerja ringan yang lebih sesuai untuk projek kecil hingga sederhana, menekankan kelajuan dan kemudahan penggunaan. Untuk projek besar dengan keperluan yang kompleks dan bilangan pengguna yang ramai, kuasa dan kebolehskalaan Laravel adalah lebih sesuai. Untuk projek atau situasi mudah dengan sumber terhad, keupayaan pembangunan CodeIgniter yang ringan dan pantas adalah lebih ideal.

Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek kecil? Laravel vs CodeIgniter: Rangka kerja manakah yang lebih baik untuk projek kecil? Jun 04, 2024 pm 05:29 PM

Untuk projek kecil, Laravel sesuai untuk projek yang lebih besar yang memerlukan fungsi dan keselamatan yang kukuh. CodeIgniter sesuai untuk projek yang sangat kecil yang memerlukan ringan dan mudah digunakan.

Amalan terbaik untuk menggunakan C++ dalam IoT dan sistem terbenam Amalan terbaik untuk menggunakan C++ dalam IoT dan sistem terbenam Jun 02, 2024 am 09:39 AM

Pengenalan kepada Amalan Terbaik untuk Menggunakan C++ dalam IoT dan Sistem Terbenam C++ ialah bahasa berkuasa yang digunakan secara meluas dalam IoT dan sistem terbenam. Walau bagaimanapun, menggunakan C++ dalam persekitaran terhad ini memerlukan mengikuti amalan terbaik khusus untuk memastikan prestasi dan kebolehpercayaan. Pengurusan memori menggunakan penunjuk pintar: Penunjuk pintar mengurus memori secara automatik untuk mengelakkan kebocoran memori dan penunjuk berjuntai. Pertimbangkan untuk menggunakan kumpulan memori: Kolam memori menyediakan cara yang lebih cekap untuk memperuntukkan dan membebaskan memori daripada malloc()/free() standard. Minimumkan peruntukan memori: Dalam sistem terbenam, sumber memori adalah terhad. Mengurangkan peruntukan memori boleh meningkatkan prestasi. Benang dan berbilang tugas menggunakan prinsip RAII: RAII (pemerolehan sumber ialah permulaan) memastikan objek dilepaskan pada penghujung kitaran hayatnya.

See all articles