Maison  >  Article  >  cadre php  >  Explorez le mécanisme d'autorisation et les méthodes de mise en œuvre dans Laravel

Explorez le mécanisme d'autorisation et les méthodes de mise en œuvre dans Laravel

PHPz
PHPzoriginal
2023-04-21 10:06:22726parcourir

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.

Qu'est-ce que l'autorisation Laravel

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.

Types d'autorisation Laravel

Dans Laravel, il existe deux types d'autorisation : l'autorisation middleware et l'autorisation politique.

Autorisation middleware

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

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 异常。

Laravel 授权的实现

中间件授权

要使用中间件授权,请实现中间件并将其添加到路由中。中间件应该检查特定的条件,并在条件不满足时停止请求。

以下是一个示例中间件实现,它检查用户是否拥有特定的角色:

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 角色,并在没有权限的情况下重定向到主页。您可以根据需要修改中间件实现。

策略授权

策略授权是与模型相关的离散授权系统。您必须遵循以下几个步骤来实现策略授权:

  1. 生成策略

使用 make:policy 命令生成策略类:

php artisan make:policy ArticlePolicy --model=Article

此命令将在 app/Policies 目录中创建一个名为 ArticlePolicy 的类。您可以在该类中指定每个 Article 模型的授权逻辑。

  1. 注册策略

app/Providers/AuthServiceProvider.php 文件的 $policies 属性中注册策略:

use App\Article;
use App\Policies\ArticlePolicy;

protected $policies = [
    Article::class => ArticlePolicy::class,
];
  1. 创建授权方法

现在,您可以在策略中实现授权逻辑了。例如,您可以创建一个可以编辑文章的方法:

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

Mise en œuvre de l'autorisation Laravel

Autorisation middleware

Pour utiliser l'autorisation middleware, implémentez le middleware et ajoutez-le à votre itinéraire. Le middleware doit vérifier des conditions spécifiques et arrêter la demande si les conditions ne sont pas remplies.

Voici un exemple d'implémentation de middleware qui vérifie si l'utilisateur a un rôle spécifique : 🎜rrreee🎜Pour utiliser ce middleware, enregistrez-le dans le fichier 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 : 🎜
  1. Générer une stratégie
🎜Utilisez la commande 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. 🎜
  1. Politique d'inscription
🎜Dans l'attribut $policies du app/Providers/AuthServiceProvider.php fichier Enregistrez la stratégie dans : 🎜rrreee
  1. Créer une méthode d'autorisation
🎜Maintenant, vous pouvez implémenter la logique d'autorisation dans la stratégie. Par exemple, vous pouvez créer une méthode permettant de modifier un article : 🎜rrreee🎜Le code ci-dessus vérifie si l'utilisateur actuel est l'auteur de l'article et, si c'est le cas, peut modifier l'article. Dans le cas contraire, la page d'édition de l'article n'est pas accessible. 🎜🎜Pour utiliser l'autorisation de politique dans le contrôleur, veuillez appeler la méthode authorize 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!

Déclaration:
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