PHP Laravel Auth
PHP Laravel Auth
PHP Laravel Auth
Fred Hémery
2018/2019
IUT Lens
Département Informatique
Principe général de la sécurité
if ( Auth :: check () ) {
// The user is logged in ...
}
Laravel propose un filtre (une classe middleware) qui permet de vérifier si une
route, une méthode est autorisée pour l’utilisateur identifié.
Route :: get ( ' profile ' , function () {
// Only authenticated users may enter ...
}) -> middleware ( ' auth ') ;
Auth :: logout () ;
Les routes par défaut
// Registration Routes
$this - > get ( ' register ' , ' Auth \ R e g i s t e r C o n t r o l l e r @ s h o w R e g i s t r a t i o n F o r m ') ;
$this - > post ( ' register ' , ' Auth \ R e g i s t e r C o n t r o l l e r @ r e g i s t e r ') ;
Gate :: define ( ' update - post ' , ' Po stP oli cy@ upd ate ') ;
}
Gate Ressource
Pour gérer l’accès à l’aide d’une Gate on utilise les méthodes allows, denies.
Dans l’exemple, l’utilisateur testé est celui qui est connecté.
if ( Gate :: allows ( ' update - post ' , $post ) ) {
// The current user can update the post ...
}
if ( Gate :: forUser ( $user ) -> denies ( ' update - post ' , $post ) ) {
// The user can 't update the post ...
}
Policy
Une Policy est une classe qui est associée à un modèle par exemple le modèle
Post est associé avec la politique d’accès définie dans la classe dans le fichier
PostPolicy
Laravel propose une commande pour générer une classe de politique d’accès
pour un modèle
php artisan make : policy PostPolicy
Une fois créée, la politique d’accès doit être enregistrée dans le fichier
App\Providers\AuthServiceProvider
<? php
class PostPolicy {
On vérifie que l’utilisateur à le droit d’effectuer l’action ’update’ sur l’objet $post.
en utilisant un filtre
use App \ Post ;
Le filtre can vérifie que l’utilisateur connecté a le droit d’exécuter l’action update
sur l’objet post qui correspond au paramètre ({post}) de la règle de routage. La
méthode create utilise le nom de la classe comme 2ème paramètre.
Policy Utilisation (suite)
Dans un contrôleur qui hérite de la classe App\Http\Controllers\Controller,
il est possible d’utiliser la méthode authorize
<? php
namespace App \ Http \ Controllers ;
@cannot ( ' update ' , $post ) @unless ( Auth :: user () -> can ( ' update ' ,
<! - - The Current User Can ` t Update å$post ) )
å The Post --> <! - - The Current User Can ` t Update
@elsecannot ( ' create ' , $post ) å The Post -->
<! - - The Current User Can ` t Create @endunless
å New Post -->
@endcannot