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.
La configuration des autorisations en arrière-plan dans Laravel nécessite l'installation des packages suivants :
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
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, ],
现在,您需要创建一组路由和控制器来管理应用程序权限。您可以在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'); });
此示例中,我们定义了四个不同的路由:
roles
:用于管理应用程序中的角色。permissions
:用于管理应用程序中的权限。users
:用于管理应用程序中的用户,以及为他们分配角色。assign-roles
和remove-roles
:用于为应用程序中的用户分配和删除角色。下一步,创建控制器,例如:
php artisan make:controller RoleController
在控制器中,您需要编写与路由匹配的方法。例如,当用户访问roles
路由时,Laravel将调用RoleController
中的index
方法:
public function index() { $roles = Role::paginate(10); return view('roles.index', compact('roles')); }
这将返回一个包含角色列表的视图,并使用Laravel嵌套路由将其发送回浏览器。在视图中,您可以使用Laravel Blade模板引擎渲染数据,并在需要的情况下向用户显示表单和按钮。
为了限制用户对应用程序管理区域的访问,您需要定义哪些角色可以执行哪些操作。例如,您可以将管理员角色分配给具有完全访问权限的用户,而只能编辑文章的编辑者角色分配给另一组用户。
在Laravel Permission软件包中,您可以使用Permission
和Role
模型来定义和管理这些权限。例如,要创建一个名为“编辑文章”的权限,您可以使用以下代码:
use Spatie\Permission\Models\Permission; $editArticles = Permission::create(['name' => 'edit articles']);
这将创建一个新的权限,并将其存储在数据库中。现在,您可以将其分配给任何其他角色,如管理员或编辑者。
现在,您需要使用auth
中间件来限制对管理路由的访问。此中间件将确保用户必须登录才能访问受保护的路由。
您可以使用Laravel的Route::group
Route::group(['middleware' => ['auth']], function () { // 受保护的路由 });
if(auth()->user()->can('edit articles')){ // 可以编辑文章 } else { // 无权限 }
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!