laravel 8 使用passport 进行Auth验证及颁发token

这篇博客介绍了在Laravel中如何利用Passport组件进行API授权认证。首先,通过Composer安装Passport,然后配置数据库迁移和运行命令创建必要的表。接着,在模型中引入HasApiTokens trait,并修改auth配置。最后,展示了如何生成和使用API访问令牌进行用户登录验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Laravel 中,实现基于传统表单的登陆和授权已经非常简单,但是如何满足 API 场景下的授权需求呢?在 API 场景里通常通过令牌来实现用户授权,而非维护请求之间的 Session 状态。在 Laravel 项目中使用 Passport 可以轻而易举地实现 API 授权认证,Passport 可以在几分钟之内为你的应用程序提供完整的 OAuth2 服务端实现。Passport 是基于由 Andy Millington 和 Simon Hamp 维护的 League OAuth2 server 建立的。

安装

在开始之前,请通过 Composer 包管理器安装 Passport:

composer require laravel/passport

 

aravel 默认使用 utf8mb4 编码,它支持在数据库中储存 emojis 。如果你是在版本低于 5.7.7 的 MySQL 或者版本低于 10.2.2 的 MariaDB 上创建索引,那你就需要手动配置数据库迁移的默认字符串长度。即在 AppServiceProvider 中调用 Schema::defaultStringLength 方法来配置它:

use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
     Schema::defaultStringLength(191);
}

Passport 服务提供器使用框架注册自己的数据库迁移目录,因此在注册提供器后,就应该运行 Passport 的迁移命令来自动创建存储客户端和令牌的数据表:

php artisan migrate

接下来,运行 passport:install 命令来创建生成安全访问令牌时所需的加密密钥,同时,这条命令也会创建用于生成访问令牌的「个人访问」客户端和「密码授权」客户端:

php artisan passport:install

在模型中应用

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;

{方法里
     use HasApiTokens;
}

 将配置文件 config/auth.php 中授权看守器 guards 的 api 的 driver 选项改为 passport

'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],

生成token

$data = \request()->all();
$res = auth()->guard('web')->attempt($data);
if(!$res){
    return json_encode(['code' => 500,'msg' => '登录失败','data' => []]);
}
$user = auth()->guard('web')->user();
$token = $user->createToken('api')->accessToken;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值