Laravel est un framework PHP populaire utilisé pour créer différents types d'applications Web. Lorsque vous créez des applications Web, vous devez souvent gérer et protéger les utilisateurs et les ressources, ce qui nécessite de gérer les autorisations d'accès.
Laravel fournit une méthode d'authentification et d'autorisation simple mais puissante qui peut facilement accorder différents niveaux d'autorisations aux utilisateurs de l'application. Dans cet article, nous explorerons le mécanisme d'autorisation dans Laravel et comment le mettre en œuvre.
L'autorisation fait référence au processus de définition et de mise en œuvre du contrôle d'accès dans une application. Cela inclut la confirmation de l'identité de l'utilisateur, la validation de son identité et la confirmation qu'il a accès aux ressources partagées.
Dans Laravel, l'autorisation fait référence aux actions spécifiques qu'un utilisateur peut effectuer ou aux ressources spécifiques auxquelles il peut accéder. Il est déterminé en fonction du rôle ou de la licence de l'utilisateur pour protéger les opérations ou les ressources sensibles au sein de l'application.
Dans Laravel, il existe deux types d'autorisation : l'autorisation middleware et l'autorisation politique.
L'autorisation middleware est implémentée via le mécanisme middleware de Laravel. Le middleware est un morceau de code qui s'exécute entre une requête HTTP et une réponse et peut être utilisé pour effectuer diverses tâches telles que la validation de la demande, l'autorisation, les opérations de journalisation, etc.
Lors de l'utilisation de l'autorisation middleware, chaque middleware vérifie des conditions spécifiques. Si les conditions ne sont pas remplies, le middleware refuse la demande et vous pouvez rediriger l'utilisateur vers une page de connexion ou une autre page d'erreur.
Policy Authorization est un système d'autorisation discret qui représente chaque modèle de votre application. Lorsque vous utilisez l'autorisation de stratégie, vous pouvez définir des droits d'utilisation pour chaque modèle, tels que la lecture, la création, la mise à jour et la suppression de données.
Lorsque vous utilisez l'autorisation de stratégie, vous pouvez définir des méthodes pour gérer la logique d'autorisation. Si la vérification d'autorisation échoue, Laravel lancera automatiquement une exception 403 Forbidden
. 403 Forbidden
异常。
要使用中间件授权,请实现中间件并将其添加到路由中。中间件应该检查特定的条件,并在条件不满足时停止请求。
以下是一个示例中间件实现,它检查用户是否拥有特定的角色:
namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RoleMiddleware { public function handle($request, Closure $next, $role) { if (! Auth::user()->hasRole($role)) { return redirect('/home'); } return $next($request); } }
要使用此中间件,请将其注册到 app/Http/Kernel.php
文件中的 $routeMiddleware
属性中。
protected $routeMiddleware = [ 'role' => \App\Http\Middleware\RoleMiddleware::class, ];
现在,您可以在路由中使用 role
中间件了。
Route::group(['middleware' => ['role:admin']], function () { Route::get('/dashboard', function () { // Your code }); });
上面的代码会检查用户是否拥有 admin
角色,并在没有权限的情况下重定向到主页。您可以根据需要修改中间件实现。
策略授权是与模型相关的离散授权系统。您必须遵循以下几个步骤来实现策略授权:
使用 make:policy
命令生成策略类:
php artisan make:policy ArticlePolicy --model=Article
此命令将在 app/Policies
目录中创建一个名为 ArticlePolicy
的类。您可以在该类中指定每个 Article
模型的授权逻辑。
在 app/Providers/AuthServiceProvider.php
文件的 $policies
属性中注册策略:
use App\Article; use App\Policies\ArticlePolicy; protected $policies = [ Article::class => ArticlePolicy::class, ];
现在,您可以在策略中实现授权逻辑了。例如,您可以创建一个可以编辑文章的方法:
public function update(User $user, Article $article) { return $user->id === $article->user_id; }
上面的代码检查当前用户是否是文章作者,如果是,则可以修改文章。如果不是,则无法访问文章编辑页面。
要在控制器中使用策略授权,请在访问 update
方法之前调用 authorize
方法:
public function update(Article $article, Request $request) { $this->authorize('update', $article); // Your code }
上面的代码会检查用户是否有权限修改文章,如果没有则会抛出 403 Forbidden
app/Http/Kernel.php
$routeMiddleware Attribut
. 🎜rrreee🎜Vous pouvez désormais utiliser le middleware role
dans vos itinéraires. 🎜rrreee🎜Le code ci-dessus vérifiera si l'utilisateur a le rôle admin
et le redirigera vers la page d'accueil sinon. Vous pouvez modifier l'implémentation du middleware selon vos besoins. 🎜🎜Policy Authorization🎜🎜Policy Authorization est un système d'autorisation discret lié au modèle. Vous devez suivre les étapes suivantes pour implémenter l'autorisation de stratégie : 🎜make:policy
pour générer la classe de stratégie : 🎜rrreee 🎜Cette commande créera une classe nommée ArticlePolicy
dans le répertoire app/Policies
. Vous pouvez spécifier une logique d'autorisation pour chaque modèle Article
de cette classe. 🎜$policies
du app/Providers/AuthServiceProvider.php
fichier Enregistrez la stratégie dans : 🎜rrreeeauthorize
avant d'accéder à la méthode update
: 🎜rrreee🎜Le code ci-dessus vérifiera si l'utilisateur a l'autorisation de modifier l'article, Sinon, une exception 403 Forbidden
sera levée. 🎜🎜Résumé🎜🎜Laravel fournit un mécanisme d'autorisation simple mais puissant qui nous permet de définir facilement différents niveaux d'autorisation pour les utilisateurs de l'application. L'autorisation middleware et l'autorisation de politique sont deux types d'autorisation Laravel, qui peuvent traiter différents scénarios. 🎜🎜Grâce à l'introduction de cet article, je pense que vous maîtrisez le concept et la méthode de mise en œuvre de l'autorisation Laravel. Si vous créez une application Web nécessitant une gestion des droits des utilisateurs, cette connaissance sera votre arme. 🎜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!