rydurham/sentinel

Sentry User Manager for Laravel的实现。


README

Build Status Total Downloads License

本包为Laravel提供了Sentry 2的实现。默认使用Bootstrap 3.0,但你可以使用任何你想要的UI。它旨在以非常简单的方式快速实现用户访问控制。对于简单项目,你不需要做太多,只需将其放入并调整配置即可。

auth包cartalyst/sentry已被弃用。如果你在生产中使用它,应升级到cartalyst/sentinel。此包最终也将被弃用。如果你正在创建新应用,请不要使用此包。

重要有两个名为"Sentinel"的PHP包。这是rydurham/sentinel,不是cartalyst/sentinel。关键区别在于,此包旨在实现Sentry v2,而Cartalyst在cartalyst/sentinel名称下发布了本应是Sentry v3的版本。下面的说明专门针对rydurham/sentinel,在继续之前,请确保你使用的是正确的包。

如果你想要快速上手cartalyst/sentinel,我创建了一个桥接包,可能对你有帮助。(请查看这里)。如果你正在创建新的Laravel项目,我建议使用那个包而不是这个包。

版本本包有多个版本,每个版本针对Laravel框架的不同版本。

Laravel 5说明

通过Composer安装包

$ composer require rydurham/sentinel

确保你已经配置了应用程序的数据库和邮件设置。

此包使用"包发现"来自动将服务提供者注册到你的应用程序。

app/Http/Kernel.php文件中注册中间件

protected $routeMiddleware = [
    // ..
    'sentry.auth' => \Sentinel\Middleware\SentryAuth::class,
    'sentry.admin' => \Sentinel\Middleware\SentryAdminAccess::class,
    'sentry.member' => \Sentinel\Middleware\SentryMember::class,
    'sentry.guest' => \Sentinel\Middleware\SentryGuest::class,
];

发布视图、资产、配置文件和迁移

php artisan sentinel:publish

你可以指定一个"主题"选项来发布特定主题的视图和资产

php artisan sentinel:publish --theme="foundation"

运行php artisan sentinel:publish --list来查看当前可用的主题。

运行迁移确保在.env文件中设置了正确的数据库连接细节。

注意,你可能需要删除Laravel 5应用程序中提供的create_users_tablecreate_password_resets_table迁移。

php artisan migrate

数据库初始化

php artisan db:seed --class=SentinelDatabaseSeeder

有关默认用户名和密码的更多详细信息,请在这里查看

设置"首页"路由。

Sentinel要求你在routes.php文件中有一个名为'home'的路由

// routes/web.php
Route::get('/', function () {
    return view('welcome');
})->name('home');

基本用法

安装并初始化后,你可以通过以下路由立即使用此包

  • yoursite.com/login
  • yoursite.com/logout
  • yoursite.com/register
  • yoursite.com/users - 用户管理。仅限于管理员
  • yoursite.com/groups - 群组管理。仅限于管理员。

Sentinel还提供了中间件,你可以使用它来防止未经授权的访问应用程序的路由和方法。

  • Sentinel\Middleware\SentryAuth - 要求用户有一个活跃的会话
  • Sentinel\Middleware\SentryAdminAccess - 阻止除拥有“admin”权限的用户之外的所有用户访问。
  • Sentinel\Middleware\SentryMember - 限制对特定组成员的访问。组名区分大小写。例如
// app\Http\Controllers\ExampleController.php
public function __construct()
{
    $this->middleware('sentry.member:Admins');
}
  • Sentinel\Middleware\SentryGuest - 将具有活动会话的用户重定向

高级用法

此包适用于简单的网站,但也可以将其集成到更大的应用程序中,进行更深层次的集成

  • 禁用默认路由(通过配置),并手动指定对您的应用程序更有意义的路由
  • 创建一个新的用户模型,该模型扩展默认的 Sentinel 用户模型 Sentinel\Models\User。请确保发布 Sentinel 和 Sentry 配置文件(使用 sentinel:publish 命令),并将 Sentry 配置文件中的 User Model 设置更改为指向您的新用户模型。
  • SentryUserRepository 和/或 SentryGroupRepository 类注入到您的控制器中,以直接访问用户和组操作。您还可以考虑创建自定义仓库,这些仓库扩展了 Sentinel 中的仓库。

不建议扩展 Sentinel 控制器类;从长远来看,从头开始创建自己的控制器会更好。

在测试中使用 Sentinel

如果您发现自己处于想要对登录用户进行测试的情况,请转到您的 ``` tests/TestCase.php ``` 并添加此方法

    use Illuminate\Events\Dispatcher;

   /**
     * Login to sentry for Testing purpose
     * @param  $email
     * @return void
     */
    public function sentryUserBe($email='admin@admin.com')
    {
        $user = \Sentry::findUserByLogin($email);
        \Sentry::login($user);
        (new dispatcher)->dispatch('sentinel.user.login', ['user' => $user]);
    }

然后您就可以开始以用户登录的状态测试您的应用程序,如下所示

class ExampleTest extends TestCase
{
    /**
     * Dashboard functional test example.
     *
     * @return void
     */
    public function testDashboardPage()
    {
        $this->sentryUserBe('admin@admin.com');
        $this->visit('/dashboard')
             ->see('dashboard');
    }
}

文档 & 问题

有关此包的更多信息,请查看 Wiki

  • 配置选项
  • 事件 & 监听器
  • 种子 & 迁移细节
  • 默认路由

有关此包的任何问题,请发布在 包网站上

本地化

Sentinel 已被翻译成多种其他语言,并始终欢迎新的翻译!有关详细信息,请查看 Sentinel 页面