Cet article démontre la création d'une application de démonstration simple utilisant Slim Micro-Framework et le package Sentinel de Cartalyst pour l'autorisation des utilisateurs. Sentinel rationalise la gestion des utilisateurs, y compris les rôles, les autorisations et l'authentification, dans les applications multi-utilisateurs.
Caractéristiques et avantages clés:
Configuration de l'environnement:
Ce didacticiel utilise des minces, vagues et du compositeur. Le code de démonstration complet est disponible sur GitHub. Commencez par installer les packages requis:
composer require slim/slim:~2.0 twig/twig:~1.* cartalyst/sentinel:2.0.* illuminate/database illuminate/events symfony/http-foundation ircmaxell/password-compat
Configuration de la base de données:
Pour l'interaction de la base de données, créez les tables nécessaires. Les utilisateurs de Laravel peuvent utiliser des migrations:
php artisan vendor:publish --provider="Cartalyst\Sentinel\Laravel\SentinelServiceProvider" php artisan migrate
Sinon, exécutez manuellement vendor/cartalyst/sentinel/schema/mysql.sql
après avoir ajouté les détails de votre connexion de la base de données en haut du fichier.
Bootstrap d'application (public/index.php
):
<?php require_once __DIR__.'/../vendor/autoload.php'; $app = new \Slim\Slim(); //register bindings include_once __DIR__.'/../app/bootstrap/container.php'; include_once __DIR__.'/../app/routes.php'; $app->run();
liaisons des conteneurs (app/bootstrap/container.php
):
Configurer les liaisons des conteneurs pour brindilles et éloquents:
$app->container->twigLoader = new Twig_Loader_Filesystem(__DIR__.'/../views'); $app->container->twig = new Twig_Environment($app->container->twigLoader, array( 'cache' => false, )); $capsule = new \Illuminate\Database\Capsule\Manager(); $capsule->addConnection([ 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'capsule', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ]); $capsule->bootEloquent(); $app->container->sentinel = (new \Cartalyst\Sentinel\Native\Facades\Sentinel())->getSentinel();
Création de rôles:
Définir les rôles et les autorisations (ce code est temporaire, exécutez une fois pour remplir la base de données):
$app->container->sentinel->getRoleRepository()->createModel()->create(array( 'name' => 'Admin', 'slug' => 'admin', 'permissions' => array( 'user.create' => true, 'user.update' => true, 'user.delete' => true ), )); $app->container->sentinel->getRoleRepository()->createModel()->create(array( 'name' => 'User', 'slug' => 'user', 'permissions' => array( 'user.update' => true ), ));
Le reste de l'article détaille la création de pages d'inscription et de connexion, la gestion de l'activation des utilisateurs, la mise en œuvre de vérifications d'autorisation (en utilisant hasAccess()
) et la déconnexion des utilisateurs. Les exemples de code couvrent le routage, la création d'utilisateurs, l'attribution de rôles, l'envoi d'e-mail d'activation et le contrôle d'accès basé sur l'autorisation. L'article se termine par une section FAQ concernant les questions courantes d'utilisation du sentinelle.
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!