bnabriss/mix-auth

Laravel Auth 提供商。

1.1.2 2018-09-23 13:11 UTC

This package is auto-updated.

Last update: 2024-09-25 19:10:19 UTC


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