bnabriss / mix-auth
Laravel Auth 提供商。
Requires
- php: >=7.1.3
- illuminate/auth: ^5.6
Requires (Dev)
- phpunit/phpunit: ~7.0
README
此认证供应商用于 Laravel 框架,以混合 Laravel 会话和 API 令牌,因此您可以使用相同的中间件和相同的路由来验证请求,如果请求包含会话cookie或支持 API 令牌。
功能
- 比 Laravel 默认令牌认证更安全,因为它使用散列令牌。
- 支持同一账户的多个令牌,因此设备不会共享相同的令牌。
- 如果请求中存在会话且没有输入令牌,则支持会话。
- 支持多种方式提供令牌,包括 URL 查询、请求正文和请求头。
- 支持多种守卫。
- 更具可定制性,因为您可以指定过期时间,请求之间的最大步骤时间。
要求
- PHP >=7.1.3
- Laravel ^5.6
安装
使用 composer 需要此包。
composer require bnabriss/mix-auth
Laravel >5.5 使用包自动发现,因此不需要您手动添加 ServiceProvider。如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php
中的 providers 数组
Bnabriss\MixAuth\MixAuthProvider::class,
您可以使用 config/mix-auth.php
定制一些供应商设置,您可以使用发布命令来发布它
php artisan vendor:publish --provider="Bnabriss\MixAuth\MixAuthProvider"
因此我们鼓励您阅读 配置文件 并了解有关自定义的更多信息。在您自定义配置后,您应使用迁移命令将数据库迁移到添加令牌表
php artisan migrate
请注意,迁移依赖于配置文件中的某些配置,因此我们鼓励您在更改配置文件后重新迁移(刷新)数据库。
使用此认证的模型应使用您的模型中的 HasMixAuth.php
特性来添加一些有用的方法
namespace App;
use Bnabriss\MixAuth\HasMixAuth;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasMixAuth, Notifiable;
}
用法
生成令牌
您可以为用户生成令牌,简单地为自定义用户或特定守卫的认证用户生成令牌。
// for custom user \App\User::first()->generateToken('guard-name'); // for authenticated user \App\User::generateTokenForAuth('guard-name');
请注意,要使用守卫,您必须在配置文件中指定它,以便您可以使用它,默认情况下,文件中只包含 web 守卫,请参阅配置文件本身的用户示例。
请注意,如果禁用了配置中的
token_sessions
键或它已经生成,则生成令牌方法不会生成会话。
认证中间件
您可以通过使用 route-middleware 为路由设置中间件,这样如果令牌存在,中间件将注册认证。如果令牌值无效或已过期,中间件将抛出异常
Route::get('/secure-page', function () { return auth('guard-name')->check(); })->middleware('mix.auth:guard-name');
删除令牌
您可以使用在特性中定义的关系令牌来删除用户令牌
$user->token()->delete();
或您甚至可以删除该用户的全部令牌(包括其他设备的令牌),方法是
$user->tokens()->delete();
如果您需要使用此供应商来 API 路由,您可能需要禁用 API 中间件
auth:api