Maison > cadre php > Laravel > Comment définir les autorisations en arrière-plan dans Laravel (étapes détaillées)

Comment définir les autorisations en arrière-plan dans Laravel (étapes détaillées)

PHPz
Libérer: 2023-04-03 19:23:31
original
1295 Les gens l'ont consulté

Laravel est un framework PHP populaire qui offre aux développeurs de nombreuses commodités et outils pour accélérer le processus de développement. Une fonctionnalité particulièrement utile est son système d’autorisations de gestion backend. En définissant les autorisations backend de Laravel, vous vous assurez que seuls les utilisateurs autorisés peuvent accéder à l'interface d'administration de votre application. Dans cet article, nous verrons comment définir les autorisations en arrière-plan dans Laravel.

Étape 1 : Installer les packages requis

La configuration des autorisations en arrière-plan dans Laravel nécessite l'installation des packages suivants :

  • Laravel Framework
  • Laravel Permission

Laravel Permission est un package de gestion des autorisations populaire qui peut facilement ajouter un système d'autorisation à votre candidature. Vous pouvez l'installer dans votre projet Laravel via le gestionnaire de packages composer avec la commande suivante :

composer require spatie/laravel-permission
Copier après la connexion

Une fois l'installation terminée, vous devez ajouter le fournisseur de services et la façade dans config/app.php : config/app.php中添加服务提供商和门面:

'providers' => [
    ...
    Spatie\Permission\PermissionServiceProvider::class,
],

'aliases' => [
    ...
    'Permission' => Spatie\Permission\Models\Permission::class,
    'Role' => Spatie\Permission\Models\Role::class,
],
Copier après la connexion

步骤二:创建路由和控制器

现在,您需要创建一组路由和控制器来管理应用程序权限。您可以在Web路由文件中定义这些路由,例如:

Route::group(['middleware' => ['auth']], function () {

    // 管理角色和权限
    Route::resource('roles', 'RoleController');
    Route::resource('permissions', 'PermissionController');

    // 管理用户角色分配
    Route::resource('users', 'UserController');
    Route::post('users/{user}/assign-roles', 'UserController@assignRoles')->name('users.assign.roles');
    Route::delete('users/{user}/remove-roles/{role}', 'UserController@removeRoles')->name('users.remove.roles');

});
Copier après la connexion

此示例中,我们定义了四个不同的路由:

  • roles:用于管理应用程序中的角色。
  • permissions:用于管理应用程序中的权限。
  • users:用于管理应用程序中的用户,以及为他们分配角色。
  • assign-rolesremove-roles:用于为应用程序中的用户分配和删除角色。

下一步,创建控制器,例如:

php artisan make:controller RoleController
Copier après la connexion

在控制器中,您需要编写与路由匹配的方法。例如,当用户访问roles路由时,Laravel将调用RoleController中的index方法:

public function index()
{
    $roles = Role::paginate(10);

    return view('roles.index', compact('roles'));
}
Copier après la connexion

这将返回一个包含角色列表的视图,并使用Laravel嵌套路由将其发送回浏览器。在视图中,您可以使用Laravel Blade模板引擎渲染数据,并在需要的情况下向用户显示表单和按钮。

步骤三:定义应用程序权限

为了限制用户对应用程序管理区域的访问,您需要定义哪些角色可以执行哪些操作。例如,您可以将管理员角色分配给具有完全访问权限的用户,而只能编辑文章的编辑者角色分配给另一组用户。

在Laravel Permission软件包中,您可以使用PermissionRole模型来定义和管理这些权限。例如,要创建一个名为“编辑文章”的权限,您可以使用以下代码:

use Spatie\Permission\Models\Permission;

$editArticles = Permission::create(['name' => 'edit articles']);
Copier après la connexion

这将创建一个新的权限,并将其存储在数据库中。现在,您可以将其分配给任何其他角色,如管理员或编辑者。

步骤四:使用中间件来保护路由

现在,您需要使用auth中间件来限制对管理路由的访问。此中间件将确保用户必须登录才能访问受保护的路由。

您可以使用Laravel的Route::group

Route::group(['middleware' => ['auth']], function () {
    // 受保护的路由
});
Copier après la connexion
Deuxième étape : créer des routes et des contrôleurs

Maintenant, vous devez créer un ensemble de routes et de contrôleurs pour gérer les autorisations des applications. Vous pouvez définir ces routes dans un fichier de routage web, par exemple :

if(auth()->user()->can('edit articles')){
    // 可以编辑文章
} else {
    // 无权限
}
Copier après la connexion

Dans cet exemple, nous avons défini quatre routes différentes :

roles : utilisé pour gérer les rôles dans l'application.

permissions : Utilisé pour gérer les autorisations dans les applications.

utilisateurs : Utilisé pour gérer les utilisateurs dans l'application et leur attribuer des rôles.

🎜assign-roles et remove-roles : utilisés pour attribuer et supprimer des rôles pour les utilisateurs dans l'application. 🎜🎜🎜 Ensuite, créez un contrôleur, par exemple : 🎜rrreee🎜Dans le contrôleur, vous devez écrire des méthodes qui correspondent aux routes. Par exemple, lorsqu'un utilisateur accède à la route roles, Laravel appellera la méthode index dans RoleController : 🎜rrreee🎜Cela renverra une liste de les rôles s'affichent et le renvoient au navigateur à l'aide du routage imbriqué Laravel. Dans une vue, vous utilisez le moteur de création de modèles Laravel Blade pour restituer les données et afficher les formulaires et les boutons à l'utilisateur si nécessaire. 🎜🎜Troisième étape : définir les autorisations de l'application🎜🎜Afin de restreindre l'accès des utilisateurs à la zone d'administration de l'application, vous devez définir quels rôles peuvent effectuer quelles actions. Par exemple, vous pouvez attribuer le rôle d'administrateur à un utilisateur disposant d'un accès complet et le rôle d'éditeur, qui peut uniquement modifier les articles, à un autre ensemble d'utilisateurs. 🎜🎜Dans le package Laravel Permission, vous pouvez utiliser les modèles Permission et Role pour définir et gérer ces autorisations. Par exemple, pour créer une autorisation appelée « Modifier les publications », vous utiliserez le code suivant : 🎜rrreee🎜 Cela créera une nouvelle autorisation et la stockera dans la base de données. Vous pouvez désormais l'attribuer à n'importe quel autre rôle comme Administrateur ou Éditeur. 🎜🎜Étape 4 : Utiliser le middleware pour sécuriser la route🎜🎜Maintenant, vous devez utiliser le middleware auth pour restreindre l'accès à la route de gestion. Ce middleware garantira que les utilisateurs doivent être connectés pour accéder aux routes protégées. 🎜🎜Vous pouvez utiliser la méthode Route::group de Laravel pour envelopper la définition de votre route et appliquer le middleware à l'ensemble du groupe : 🎜rrreee🎜Désormais, seuls les utilisateurs authentifiés auront accès à ces routes. 🎜🎜Cinquième étape : utiliser l'autorisation Laravel pour autoriser l'accès🎜🎜Enfin, vous devez utiliser le package d'autorisation Laravel pour contrôler quels rôles peuvent effectuer des opérations spécifiques. Par exemple, pour garantir que seuls les utilisateurs disposant de l'autorisation « Modifier les articles » peuvent modifier les articles dans votre application, vous pouvez utiliser le code suivant : 🎜rrreee🎜 Cet extrait de code vérifie si l'utilisateur actuellement authentifié dispose de l'autorisation « Modifier les articles ». Si l'utilisateur dispose des autorisations, il peut effectuer les opérations pertinentes. Dans le cas contraire, ils n’auront pas le pouvoir d’apporter des modifications. 🎜🎜Conclusion🎜🎜 La configuration des autorisations d'administrateur backend dans Laravel nécessite quelques étapes, mais une fois que vous les connaissez, vous pouvez facilement contrôler quels utilisateurs peuvent effectuer quelles actions à l'aide du package d'autorisations Laravel. De cette façon, vous vous assurez que seuls les utilisateurs autorisés ont accès à votre zone de gestion d'applications, protégeant ainsi la sécurité de vos données et réduisant les risques de sécurité. 🎜

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!

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