jpnut / extended-laravel-auth
Laravel 扩展认证实现
Requires
- php: >=7.0
- illuminate/auth: ~5.5.0|~5.6.0
- illuminate/contracts: ~5.5.0|~5.6.0
- illuminate/database: ~5.5.0|~5.6.0
- illuminate/support: ~5.5.0|~5.6.0
- laravel/framework: ~5.5.0|~5.6.0
- symfony/http-foundation: ~4.0
Requires (Dev)
- mockery/mockery: ~0.9.4
- orchestra/testbench: ~3.3.0|~3.4.2|^3.5.0
- phpunit/phpunit: ^5.7|6.2|^7.0
This package is auto-updated.
Last update: 2020-09-10 15:26:52 UTC
README
此包扩展了默认的 Laravel 认证框架,允许为每个用户创建多个“记住我”令牌。
使用 Laravel 的默认认证,一次只能将一个“记住我”令牌与一个用户关联。这对于使用多个设备的用户来说是一个问题。例如,考虑一个用户在两个设备上(例如,在桌面和移动设备上)使用“记住我”功能登录。如果这个用户在一个设备上注销(例如,移动设备),则“记住我”令牌将被重新生成,并且用户在其他设备上(本例中为桌面)不会自动登录。我们通过允许为每个用户存储多个“记住我”令牌来解决这个问题。
此过程还具有额外的优势,即允许应用程序使特定的“记住我”令牌无效。例如,如果用户在公共设备上意外点击“记住我”,则默认流程只允许用户在所有设备上使令牌无效。使用此包,我们可以选择性地吊销令牌。
安装
您可以使用 composer 安装此包
composer require jpnut/extended-laravel-auth
您可以使用以下命令发布迁移
php artisan vendor:publish --provider="JPNut\ExtendedAuth\AuthServiceProvider" --tag="migrations"
请注意,此包目前不处理用户表中“remember_token”字段的删除。任何现有令牌将不会自动转移。发布迁移后,您可以通过运行迁移来创建令牌表
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="JPNut\ExtendedAuth\AuthServiceProvider" --tag="config"
用法
由于默认的“记住我”令牌认证实现已嵌入到 "Illuminate\Contracts\Auth\Authenticatable"
协议中,因此此包覆盖了它,并提供了 Laravel 提供的 "Illuminate\Foundation\Auth\User"
的替代方案。
您必须确保您的 User
模型实现 "JPNut\ExtendedAuth\Contracts\Authenticatable"
。最简单的方法是扩展 "JPNut\ExtendedAuth\User"
use JPNut\ExtendedAuth\User as Authenticatable; class User extends Authenticatable { // ... }
要启用保护者,您需要按以下方式修改 config/auth.php
... 'guards' => [ 'extended-web' => [ 'driver' => 'extended-session', 'provider' => 'extended-users', ], ], ... 'extended-users' => [ 'driver' => 'extended-eloquent', 'model' => JPNut\ExtendedAuth\User::class, ], ...
您还应该确保在您希望使用此保护者的路由上定义了保护者。对于大多数情况,这涉及到将默认保护者更改为 extended-web
。请注意,可以在 config/extended-auth
文件中修改 extended-session
和 extended-eloquent
。
默认 Laravel 框架的某些其他区域也依赖于此包中已更改的功能
- 您应该在
config/app.php
中注释掉Illuminate\Auth\Passwords\PasswordResetServiceProvider::class
- 在测试期间,您应该使用
JPNut\ExtendedAuth\Testing\TestCase
覆盖Illuminate\Foundation\Testing\TestCase
- 对于密码重置,您应该用
JPNut\ExtendedAuth\ResetsPasswords
替换Illuminate\Foundation\Auth\ResetsPasswords
扩展
您需要确保
- 任何
User
模型实现JPNut\ExtendedAuth\Contracts\Authenticatable
- 您的
Token
模型实现JPNut\ExtendedAuth\Contracts\Tokenable
测试
phpunit
许可证
MIT