malezha / sentry-auth-laravel
Laravel 的 Sentry 认证驱动程序
Requires
- php: >=5.4.0
- cartalyst/sentry: 2.1.*
- illuminate/support: 4.2.*
Requires (Dev)
- doctrine/dbal: 2.4.*
- orchestra/testbench: 2.2.*
- phpunit/phpunit: 4.2.*
README
该包不再受支持。
基于 hampel/sentry-auth-laravel 进行分叉。
允许您使用 Cartalyst Sentry 的内置 Laravel 认证例程。
Laravel 内置的认证例程允许您为应用程序配置认证驱动程序,包括发送密码重置邮件等功能。
虽然 Cartalyst 的 Sentry 提供了相同的功能,但它以不同且不兼容的方式提供,因此您需要重写所有认证例程以使用 Sentry 的 API - 您不能简单地更改 Laravel 中的认证驱动程序。
此包允许您做到这一点 - 安装 Sentry 和此驱动程序,然后您可以配置内置的认证驱动程序以使用 "sentry" 进行认证。您仍然需要扩展功能以实现 Sentry 的高级功能,如组、权限、登录限制等 - 但至少您不需要完全重写默认的认证提供程序。
理想情况下,Cartalyst 应该将其包装功能作为其自己的 Sentry 包的一部分提供,但在此之前,希望此包对某些人有用。
由 Simon Hampel 和 Oleg Isaev 提供。
版本
驱动程序 | Laravel | Sentry |
---|---|---|
1.0.* | 4.0.* | 2.0.* |
1.1.* | 4.1.* | 2.0.* |
1.2.* | 4.2.* | 2.1.* |
安装
推荐通过 Composer 安装。
通过 Composer 在您的 composer.json
中要求包。
"cartalyst/sentry": "2.1.*", "malezha/sentry-auth-laravel": "1.2.*"
运行 Composer 以更新新要求。
composer update
打开您的 Laravel 配置文件 app/config/app.php
并将两个服务提供程序添加到提供程序数组中
'providers' => array( ... 'Cartalyst\Sentry\SentryServiceProvider', 'Malezha\Sentry\Auth\SentryAuthServiceProvider', 'Malezha\Sentry\Hashing\SentryHashServiceProvider', ),
SentryAuthServiceProvider 是 Auth 服务扩展到新的 "sentry" 用户提供程序的地方。
SentryHashServiceProvider 提供一个新的服务 "sentry-hash",它为 Sentry 哈希例程提供了一个简单的包装。
该包还提供了一个基于 Eloquent 的用户模型,称为 SentryUser,它扩展了 Sentry 提供的默认 Eloquent 用户模型,并实现了默认 Sentry 模型中缺少的几个必需接口。
确保您已将 Sentry 类别名添加到 app/config/app.php
'aliases' => array( ... 'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry' ),
运行包迁移
php artisan migrate --package=cartalyst/sentry php artisan migrate --package=malezha/sentry-auth-laravel
如果您尚未这样做,发布您的 Sentry 配置文件
php artisan config:publish cartalyst/sentry
... 应该可以在 app/config/packages/cartalyst/sentry
中找到配置文件
打开您的 Laravel 配置文件 app/config/auth.php
并将驱动程序设置为 sentry
'driver' => 'sentry',
对于 Sentry,您选择哪种哈希器无关紧要,我们的驱动程序将简单地使用相同的哈希器替换 Laravel 内置的哈希器。
我们的 SentryUser
模型扩展了 Sentry 的用户模型,但也实现了一些 Laravel Auth 库所需的额外接口。如果您已扩展我们的 SentryUser 模型,您应在 Laravel 的 auth.php
配置文件和 Sentry 的 config.php
文件中指定您自己的模型名称。
例如,在 app/models/User.php
中创建一个新的模型
use Malezha\Sentry\Auth\SentryUser; class User extends SentryUser { /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = array( 'password', 'reset_password_code', 'activation_code', 'persist_code', 'remember_token', ); }
然后,您需要修改 app/config/auth.php
文件,将模型设置为 User
'model' => 'User',
同时,也需要将 app/config/packages/cartalyst/sentry/config.php
文件中的用户模型也设置为 User
'users' => array( 'model' => 'User', ),
使用方法
按照 https://laravel.net.cn/docs/security 中的说明,像平常一样实现您的 Laravel 应用的用户认证。
您可以使用提供的 SentryUser
模型来替换 Sentry 提供的用户模型,或者实现一个扩展我们提供的模型的自定义模型。
由于在 Sentry 中用作用户名的字段可以进行配置,当向 Auth::attempt
发送用户数据时,您应该使用配置值而不是在您的代码中硬编码值。有两种方式来获取这个值
$loginfield = \Malezha\Sentry\Auth\SentryUser::getLoginAttributeName();
或者,您可以直接检查配置值(确保您在运行时没有动态地自己更改登录属性名称!)
$loginfield = Config::get('cartalyst/sentry::users.login_attribute');
然后,您可以在控制器(或其他地方)中使用这个值进行验证和认证
$loginfield = \Malezha\Sentry\Auth\SentryUser::getLoginAttributeName(); $passwordfield = 'password'; $credentials = array( $loginfield => Input::get('email'), $passwordfield => Input::get('password') ); if (Auth::attempt($credentials)) { // successfully logged in } else { // authentication failed }
许可证
该软件包是开源软件,受 MIT 许可证 许可。