Laravel fournit un moyen plus simple de gérer les actions d'autorisation des utilisateurs. Semblable à l'authentification des utilisateurs, Laravel dispose de 2 méthodes principales pour implémenter l'autorisation des utilisateurs : les portes et les politiques. Enregistrez ici l'utilisation de la stratégie. L'utilisation de la stratégie pour finaliser l'autorisation de l'utilisateur comprend principalement trois étapes :
Définir la classe de stratégie
Enregistrer la classe de stratégie et l'association de modèle
Jugement de stratégie
Définir la classe de stratégie.
La stratégie est une classe qui organise la logique d'autorisation dans un modèle ou une ressource spécifique. Par exemple, si l'application est un blog, il y aura un modèle Post et une PostPolicy correspondante pour autoriser les actions de l'utilisateur, telles que la création ou la mise à jour d'un blog ou la suppression d'un blog.
À ce stade, vous pouvez utiliser la commande artisan pour créer une classe de stratégie. La commande suivante crée une classe de stratégie de publication vide
php artisan make:policy PostPolicy
La stratégie générée sera placée dans l'application/Policies. annuaire. Si ce répertoire n'existe pas dans votre application, Laravel le créera automatiquement
Si vous souhaitez générer une classe de stratégie contenant CURD, vous pouvez utiliser la commande artisanale suivante
php artisan make:policy PostPolicy --model=Post
pour vous inscrire la classe de stratégie associée au modèle
Enregistrer la classe de politique dans l'AuthServiceProvider
protected $policies = [ //'App\Model' => 'App\Policies\ModelPolicy', 这个是laravel中默认注册了的policy,可以模仿这个注册我们自己的policy 'App\Post' => 'App\Policies\PostPolicy', //注册Post的policy ];
Associer la classe de politique au modèle signifie écrire notre méthode de politique dans la politique
<?phpnamespace App\Policies;use App\User;use App\Post;use Illuminate\Auth\Access\HandlesAuthorization;class PostPolicy{ use HandlesAuthorization; /** * Determine whether the user can update the post. * * @param \App\User $user * @param \App\Post $post * @return mixed */ public function update(User $user, Post $post) { // return $user->id === $post->user_id; } /** * Determine whether the user can delete the post. * * @param \App\User $user * @param \App\Post $post * @return mixed */ public function delete(User $user, Post $post) { // return $user->id === $post->user_id; }
méthode de mise à jour Accepte les instances User et Post comme paramètres et doit renvoyer true ou false pour indiquer si l'utilisateur est autorisé à mettre à jour la publication donnée. Par conséquent, dans cet exemple, nous déterminons si l'identifiant de l'utilisateur correspond à l'identifiant de l'utilisateur dans la publication,
Jugement politique
Ici, nous utilisons la fonction auxiliaire du contrôleur dans le contrôleur pour porter un jugement politique
//文章编辑逻辑 public function update(Post $post) { $this->validate(request(),[ 'title' => 'required|String|min:5|max:50', 'content' => 'required|String|min:10', ]); $this->authorize('update',$post); ////////////////////策略判断 $post->title = request('title'); $post->content = request('content'); $post->save(); return redirect("/posts/{$post->id}"); } //文章删除 public function delete(Post $post) { //TODO::权限验证 $this->authorize('delete',$post); //////////////////策略判断 $post->delete(); return redirect('/posts'); }
Tant que la vérification échoue, laravel lancera automatiquement une HttpException. Cette action n'est pas autorisée.
Pendant le développement, nous devrons peut-être déterminer s'il faut afficher certains boutons en fonction des autorisations de l'utilisateur, tels que comme dans le bouton Modifier ou Modifier de la vue, dans le blade, nous pouvons utiliser @can pour spécifier si le bouton du modèle affiche
Laravel fournit un moyen plus simple de gérer l'autorisation des utilisateurs actes. Semblable à l'authentification des utilisateurs, Laravel dispose de 2 méthodes principales pour implémenter l'autorisation des utilisateurs : les portes et les politiques.
Enregistrez ici l'utilisation de la stratégie. L'utilisation de la stratégie pour compléter l'autorisation de l'utilisateur comprend principalement trois étapes :
Définir la classe de stratégie
Enregistrer la classe de stratégie et l'association de modèle
Jugement de stratégie
Définir des classes de stratégie
Une stratégie est une classe qui organise la logique d'autorisation dans un modèle ou une ressource spécifique. Par exemple, si l'application est un blog, il y aura un modèle Post et une PostPolicy correspondante pour autoriser les actions de l'utilisateur, telles que la création ou la mise à jour d'un blog ou la suppression d'un blog.
À ce stade, vous pouvez utiliser la commande artisan pour créer une classe de stratégie. La commande suivante crée une classe de stratégie de publication vide
php artisan make:policy PostPolicy
La stratégie générée sera placée dans l'application/Policies. annuaire. Si ce répertoire n'existe pas dans votre application, Laravel le créera automatiquement
Si vous souhaitez générer une classe de stratégie contenant CURD, vous pouvez utiliser la commande artisanale suivante
php artisan make:policy PostPolicy --model=Post
pour vous inscrire la classe de stratégie associée au modèle
Enregistrer la classe de politique dans l'AuthServiceProvider
protected $policies = [ //'App\Model' => 'App\Policies\ModelPolicy', 这个是laravel中默认注册了的policy,可以模仿这个注册我们自己的policy 'App\Post' => 'App\Policies\PostPolicy', //注册Post的policy ];
Associer la classe de politique au modèle signifie écrire notre méthode de politique dans la politique
<?phpnamespace App\Policies;use App\User;use App\Post;use Illuminate\Auth\Access\HandlesAuthorization;class PostPolicy{ use HandlesAuthorization; /** * Determine whether the user can update the post. * * @param \App\User $user * @param \App\Post $post * @return mixed */ public function update(User $user, Post $post) { // return $user->id === $post->user_id; } /** * Determine whether the user can delete the post. * * @param \App\User $user * @param \App\Post $post * @return mixed */ public function delete(User $user, Post $post) { // return $user->id === $post->user_id; }
méthode de mise à jour Accepte les instances User et Post comme paramètres et doit renvoyer true ou false pour indiquer si l'utilisateur est autorisé à mettre à jour la publication donnée. Par conséquent, dans cet exemple, nous déterminons si l'identifiant de l'utilisateur correspond à l'identifiant de l'utilisateur dans la publication,
Jugement politique
Ici, nous utilisons la fonction auxiliaire du contrôleur dans le contrôleur pour porter un jugement politique
//文章编辑逻辑 public function update(Post $post) { $this->validate(request(),[ 'title' => 'required|String|min:5|max:50', 'content' => 'required|String|min:10', ]); $this->authorize('update',$post); ////////////////////策略判断 $post->title = request('title'); $post->content = request('content'); $post->save(); return redirect("/posts/{$post->id}"); } //文章删除 public function delete(Post $post) { //TODO::权限验证 $this->authorize('delete',$post); //////////////////策略判断 $post->delete(); return redirect('/posts'); }
Tant que la vérification échoue, laravel lancera automatiquement une HttpException. Cette action n'est pas autorisée.
Pendant le développement, nous devrons peut-être déterminer s'il faut afficher certains boutons en fonction des autorisations de l'utilisateur, tels que comme dans la vue Editer ou modifier le bouton, dans blade on peut utiliser @can pour préciser si le bouton modèle est affiché.
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!