Rumah >pembangunan bahagian belakang >tutorial php >Mengeluarkan kesakitan kebenaran pengguna dengan sentinel

Mengeluarkan kesakitan kebenaran pengguna dengan sentinel

William Shakespeare
William Shakespeareasal
2025-02-16 10:48:13570semak imbas

Artikel ini menunjukkan membina aplikasi demo mudah menggunakan pakej sentinel mikro dan kartal untuk kebenaran pengguna. Sentinel menyelaraskan pengurusan pengguna, termasuk peranan, keizinan, dan pengesahan, dalam aplikasi multi-pengguna.

Removing the Pain of User Authorization with Sentinel

Ciri -ciri & Manfaat Utama:

    kebenaran pengguna yang dipermudahkan: Sentinel menawarkan API mesra pengguna untuk menguruskan pengguna, kumpulan, dan keizinan.
  • Integrasi Rangka Kerja: Bekerja dengan baik dengan Slim dan Laravel, menyediakan alat untuk penciptaan peranan, pengesahan, dan kawalan kebenaran.
  • Pelaksanaan Peranan Mudah: Membuat dan Menguruskan Peranan dengan Tetapan Kebenaran Terperinci adalah mudah. ​​
  • Keselamatan yang dipertingkatkan: Termasuk sistem pengaktifan pengguna dan kata laluan untuk keselamatan yang lebih baik melalui pengesahan e -mel dan diset semula kata laluan.
  • Contoh Praktikal: Tutorial ini memberikan demonstrasi keupayaan Sentinel dalam aplikasi sampel.

Menyediakan persekitaran:

Tutorial ini menggunakan Slim, Vagrant, dan Composer. Kod demo lengkap boleh didapati di GitHub. Mulakan dengan memasang pakej yang diperlukan:

<code class="language-bash">composer require slim/slim:~2.0 twig/twig:~1.* cartalyst/sentinel:2.0.* illuminate/database illuminate/events symfony/http-foundation ircmaxell/password-compat</code>
Persediaan Pangkalan Data:

Untuk interaksi pangkalan data, buat jadual yang diperlukan. Pengguna Laravel boleh menggunakan migrasi:

<code class="language-bash">php artisan vendor:publish --provider="Cartalyst\Sentinel\Laravel\SentinelServiceProvider"
php artisan migrate</code>
sebaliknya, secara manual melaksanakan

selepas menambah butiran sambungan pangkalan data anda di bahagian atas fail. vendor/cartalyst/sentinel/schema/mysql.sql

Bootstrap Application (

): public/index.php

<code class="language-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();</code>

Pengikatan kontena (): app/bootstrap/container.php

Konfigurasikan pengikatan kontena untuk ranting dan fasih:

<code class="language-php">$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();</code>

Mewujudkan peranan:

Tentukan peranan dan keizinan (kod ini bersifat sementara, dijalankan sekali untuk mengisi pangkalan data):

<code class="language-php">$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
    ),
));</code>
Baki butiran artikel yang membuat halaman pendaftaran dan log masuk, mengendalikan pengaktifan pengguna, melaksanakan cek kebenaran (menggunakan

), dan log keluar pengguna. Contoh kod meliputi penghalaan, penciptaan pengguna, tugasan peranan, penghantaran e-mel pengaktifan, dan kawalan akses berasaskan kebenaran. Artikel ini disimpulkan dengan seksyen FAQ yang menangani soalan penggunaan sentinel biasa. hasAccess()

Atas ialah kandungan terperinci Mengeluarkan kesakitan kebenaran pengguna dengan sentinel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn