Maison > cadre php > Laravel > le corps du texte

Gestion des utilisateurs et contrôle des autorisations dans Laravel : implémentation de plusieurs utilisateurs et attributions de rôles

WBOY
Libérer: 2023-08-12 14:57:06
original
1143 Les gens l'ont consulté

Gestion des utilisateurs et contrôle des autorisations dans Laravel : implémentation de plusieurs utilisateurs et attributions de rôles

Gestion des utilisateurs et contrôle des autorisations dans Laravel : implémentation de plusieurs utilisateurs et attribution de rôles

Introduction :

Dans les applications Web modernes, la gestion des utilisateurs et le contrôle des autorisations sont l'une des fonctions très importantes. Laravel, en tant que framework PHP populaire, fournit des outils puissants et flexibles pour implémenter le contrôle des autorisations pour plusieurs utilisateurs et attributions de rôles. Cet article présentera comment implémenter les fonctions de gestion des utilisateurs et de contrôle des autorisations dans Laravel, et fournira des exemples de code pertinents.

1. Installation et configuration

Tout d'abord, pour implémenter les fonctions de gestion des utilisateurs et de contrôle des autorisations dans Laravel, nous devons installer et configurer les deux packages suivants : Laravel Breeze et Spatie Laravel Permission.

1.1 Installer Laravel Breeze

Laravel Breeze est un système d'authentification léger qui peut nous aider à créer rapidement l'enregistrement, la connexion, la déconnexion des utilisateurs et d'autres fonctions. Tout d'abord, exécutez la commande suivante dans la ligne de commande pour installer Laravel Breeze :

composer require laravel/breeze --dev
Copier après la connexion

Ensuite, exécutez la commande suivante pour installer et configurer Laravel Breeze :

php artisan breeze:install
npm install
npm run dev
Copier après la connexion

1.2 Installer Spatie Laravel Permission

Spatie Laravel Permission est un outil de gestion des utilisateurs. Le package permissions peut nous aider à mettre en œuvre des fonctions d’autorisation de rôle et de gestion des droits. Exécutez la commande suivante pour installer l'autorisation Spatie Laravel :

composer require spatie/laravel-permission
php artisan vendor:publish --provider="SpatiePermissionPermissionServiceProvider"
php artisan migrate
Copier après la connexion

2. Gestion des utilisateurs

2.1 Créer un modèle utilisateur et une migration

Tout d'abord, exécutez la commande suivante dans la ligne de commande pour créer le modèle utilisateur et le fichier de migration de base de données :

php artisan make:model User -m
Copier après la connexion

Ensuite, dans Dans le fichier de modèle utilisateur généré, ajoutez le code suivant :

use IlluminateFoundationAuthUser as Authenticatable;
use SpatiePermissionTraitsHasRoles;

class User extends Authenticatable
{
    use HasRoles;
    
    // 其他代码...
}
Copier après la connexion

Ensuite, dans le fichier de migration de base de données généré, ajoutez le code suivant pour définir les champs de la table utilisateur :

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();
    });
}
Copier après la connexion

Enfin, exécutez la commande suivante pour lancez la migration de la base de données :

php artisan migrate
Copier après la connexion

2.2 Inscription et connexion

Laravel Breeze nous fournit déjà des fonctions d'inscription et de connexion, il suffit de les référencer dans les fichiers de vue correspondants. Dans le répertoire resources/views/auth, ouvrez le fichier register.blade.php et ajoutez le code suivant :

<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>
Copier après la connexion

Ensuite, dans le fichier login.blade.php, ajoutez le code suivant :

<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>
Copier après la connexion

Jusqu'à présent, nous avons terminé Des fonctions d'enregistrement et de connexion des utilisateurs sont fournies.

3. Contrôle des rôles et des autorisations

3.1 Créer un modèle de rôle et d'autorisation

Tout d'abord, exécutez la commande suivante dans la ligne de commande pour créer le modèle de rôle et d'autorisation :

php artisan make:model Role
php artisan make:model Permission
Copier après la connexion

Ensuite, dans le fichier de modèle de rôle généré, ajoutez le code suivant :

use SpatiePermissionModelsRole as BaseRole;

class Role extends BaseRole
{
    // 其他代码...
}
Copier après la connexion

Ensuite, également dans le fichier de modèle d'autorisation généré, ajoutez le code suivant :

use SpatiePermissionModelsPermission as BasePermission;

class Permission extends BasePermission
{
    // 其他代码...
}
Copier après la connexion

3.2 Attribuer des rôles et des autorisations

Pour attribuer des rôles et des autorisations aux utilisateurs, nous devons écrire les méthodes correspondantes dans l'utilisateur code du contrôleur. Dans le répertoire app/Http/Controllers/Auth, ouvrez le fichier RegisteredUserController.php, et dans la méthode store, ajoutez le code suivant :

// 创建用户
$user = User::create([
    'name' => $request->name,
    'email' => $request->email,
    'password' => Hash::make($request->password),
]);

// 角色和权限分配示例
$user->assignRole('writer');
$user->givePermissionTo('create articles');
Copier après la connexion

Dans le code ci-dessus, nous attribuons des rôles et des autorisations aux utilisateurs via les méthodes assignRole et givePermissionTo. .

4. Utiliser un middleware pour le contrôle des autorisations

Dans Laravel, nous pouvons utiliser un middleware pour le contrôle des autorisations. Tout d'abord, dans le fichier app/Http/Kernel.php, enregistrez le middleware fourni par Spatie Laravel Permission :

protected $routeMiddleware = [
    // 其他中间件...
    'role' => SpatiePermissionMiddlewaresRoleMiddleware::class,
    'permission' => SpatiePermissionMiddlewaresPermissionMiddleware::class,
];
Copier après la connexion

Ensuite, utilisez le middleware dans la route correspondante pour restreindre l'accès des utilisateurs :

Route::middleware(['permission:create articles'])->group(function () {
    // 允许拥有'create articles'权限的用户访问的路由
});
Copier après la connexion

De cette façon, seulement si vous avez 'create Seuls les utilisateurs disposant de l'autorisation d'articles peuvent accéder à cet itinéraire.

Résumé :

Cet article présente comment implémenter la gestion des utilisateurs et le contrôle des autorisations dans Laravel. En utilisant des composants tels que Laravel Breeze et Spatie Laravel Permission, nous pouvons rapidement créer des fonctions d'enregistrement des utilisateurs, de connexion et de contrôle des autorisations de rôle. J'espère que cet article sera utile à tout le monde dans la mise en œuvre du contrôle des autorisations pour plusieurs utilisateurs et attributions de rôles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal