Rumah rangka kerja php Laravel Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan

Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan

Aug 12, 2023 pm 02:57 PM
laravel Kawalan kebenaran Pengurusan pengguna

Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan

Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan

引言:

在现代的Web应用程序中,用户管理和权限控制是非常重要的功能之一。Laravel作为一种流行的PHP框架,提供了强大而灵活的工具来实现多用户和角色分配的权限控制。本文将介绍如何在Laravel中实现用户管理和权限控制的功能,并提供相关的代码示例。

一、安装与配置

首先,在Laravel中实现用户管理和权限控制的功能,我们需要安装和配置以下两个包:Laravel Breeze和Spatie Laravel Permission。

1.1 安装Laravel Breeze

Laravel Breeze是一个轻量级的身份验证系统,可以帮助我们快速搭建用户注册、登录、注销等功能。首先,在命令行中执行以下命令来安装Laravel Breeze:

1

composer require laravel/breeze --dev

Salin selepas log masuk

然后,执行以下命令来安装和配置Laravel Breeze:

1

2

3

php artisan breeze:install

npm install

npm run dev

Salin selepas log masuk

1.2 安装Spatie Laravel Permission

Spatie Laravel Permission是一个用于管理用户权限的包,可以帮助我们实现角色授权和权限管理功能。执行以下命令来安装Spatie Laravel Permission:

1

2

3

composer require spatie/laravel-permission

php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider"

php artisan migrate

Salin selepas log masuk

二、用户管理

2.1 创建用户模型和迁移

首先,在命令行中执行以下命令来创建用户模型和数据库迁移文件:

1

php artisan make:model User -m

Salin selepas log masuk

然后,在生成的用户模型文件中,添加以下代码:

1

2

3

4

5

6

7

8

9

use IlluminateFoundationAuthUser as Authenticatable;

use SpatiePermissionTraitsHasRoles;

 

class User extends Authenticatable

{

    use HasRoles;

     

    // 其他代码...

}

Salin selepas log masuk

接下来,在生成的数据库迁移文件中,添加以下代码来定义用户表的字段:

1

2

3

4

5

6

7

8

9

10

11

12

public function up()

{

    Schema::create('users', function (Blueprint $table) {

        $table->id();

        $table->string('name');

        $table->string('email')->unique();

        $table->timestamp('email_verified_at')->nullable();

        $table->string('password');

        $table->rememberToken();

        $table->timestamps();

    });

}

Salin selepas log masuk

最后,执行以下命令来运行数据库迁移:

1

php artisan migrate

Salin selepas log masuk

2.2 注册与登录

Laravel Breeze已经为我们提供了注册和登录功能,我们只需要在相应的视图文件中引用它们即可。在resources/views/auth目录下,打开register.blade.php文件,并添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<x-guest-layout>

    <x-auth-card>

        <x-slot name="logo">

            <a href="/">

                <x-application-logo class="w-20 h-20 fill-current text-gray-500" />

            </a>

        </x-slot>

 

        <div class="mb-4 text-sm text-gray-600">

            {{ __('This is a secure area of the application. Please confirm your password before continuing.') }}

        </div>

 

        <!-- 用户注册代码 -->

 

    </x-auth-card>

</x-guest-layout>

Salin selepas log masuk

然后,在login.blade.php文件中,添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

<x-guest-layout>

    <x-auth-card>

        <x-slot name="logo">

            <a href="/">

                <x-application-logo class="w-20 h-20 fill-current text-gray-500" />

            </a>

        </x-slot>

 

        <!-- 用户登录代码 -->

 

    </x-auth-card>

</x-guest-layout>

Salin selepas log masuk

到目前为止,我们已经完成了用户注册和登录的功能。

三、角色和权限控制

3.1 创建角色和权限模型

首先,在命令行中执行以下命令来创建角色和权限模型:

1

2

php artisan make:model Role

php artisan make:model Permission

Salin selepas log masuk

然后,在生成的角色模型文件中,添加以下代码:

1

2

3

4

5

6

use SpatiePermissionModelsRole as BaseRole;

 

class Role extends BaseRole

{

    // 其他代码...

}

Salin selepas log masuk

接下来,同样在生成的权限模型文件中,添加以下代码:

1

2

3

4

5

6

use SpatiePermissionModelsPermission as BasePermission;

 

class Permission extends BasePermission

{

    // 其他代码...

}

Salin selepas log masuk

3.2 分配角色和权限

要为用户分配角色和权限,我们需要在用户控制器中的相应方法中编写代码。在app/Http/Controllers/Auth目录下,打开RegisteredUserController.php文件,在其中的store方法中,添加以下代码:

1

2

3

4

5

6

7

8

9

10

// 创建用户

$user = User::create([

    'name' => $request->name,

    'email' => $request->email,

    'password' => Hash::make($request->password),

]);

 

// 角色和权限分配示例

$user->assignRole('writer');

$user->givePermissionTo('create articles');

Salin selepas log masuk

以上代码中,我们通过assignRole和givePermissionTo方法来分别给用户分配角色和权限。

四、使用中间件进行权限控制

在Laravel中,我们可以使用中间件来进行权限控制。首先,在app/Http/Kernel.php文件中,注册Spatie Laravel Permission提供的中间件:

1

2

3

4

5

protected $routeMiddleware = [

    // 其他中间件...

    'role' => SpatiePermissionMiddlewaresRoleMiddleware::class,

    'permission' => SpatiePermissionMiddlewaresPermissionMiddleware::class,

];

Salin selepas log masuk

然后,在相应的路由中使用该中间件来限制用户访问:

1

2

3

Route::middleware(['permission:create articles'])->group(function () {

    // 允许拥有'create articles'权限的用户访问的路由

});

Salin selepas log masuk

这样,只有拥有'create articles'权限的用户才能访问到该路由。

总结:

本文介绍了在Laravel中实现用户管理和权限控制的方法。通过使用Laravel Breeze和Spatie Laravel Permission等组件,我们可以快速搭建用户注册、登录和角色权限控制的功能。希望本文对大家在实现多用户和角色分配的权限控制中有所帮助。

Atas ialah kandungan terperinci Pengurusan pengguna dan kawalan kebenaran dalam Laravel: melaksanakan berbilang pengguna dan tugasan peranan. 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)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan 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 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.

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 - 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?

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.

Manakah enjin templat yang lebih baik, Laravel atau CodeIgniter? Manakah enjin templat yang lebih baik, Laravel atau CodeIgniter? Jun 03, 2024 am 11:30 AM

Membandingkan enjin templat Laravel's Blade dan CodeIgniter's Twig, pilih berdasarkan keperluan projek dan keutamaan peribadi: Blade adalah berdasarkan sintaks MVC, yang menggalakkan organisasi kod dan warisan templat yang baik. Twig ialah perpustakaan pihak ketiga yang menyediakan sintaks fleksibel, penapis berkuasa, sokongan lanjutan dan kotak pasir keselamatan.

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

Laravel - Artisan Console - Rangka kerja Laravel menyediakan tiga alat utama untuk interaksi melalui baris arahan iaitu: Artisan, Ticker dan REPL. Bab ini menerangkan tentang Artisan secara terperinci.

See all articles