📅  最后修改于: 2023-12-03 14:52:23.590000             🧑  作者: Mango
访问令牌是一种用于访问受保护资源的凭证。在 Laravel 中,您可以使用 Passport 扩展包轻松地创建和管理访问令牌。
要使用 Passport 扩展包,您需要在 Laravel 项目中安装它。您可以在终端中通过以下命令来安装它:
composer require laravel/passport
安装 Passport 扩展包后,您需要运行以下命令来创建必要的数据库迁移:
php artisan migrate
接下来,运行以下命令来生成 Passport 所需的加密密钥:
php artisan passport:install
然后,您需要将 Passport 的服务提供者添加到 config/app.php
文件中的 providers
数组中:
'providers' => [
// Other service providers...
Laravel\Passport\PassportServiceProvider::class,
],
最后,运行以下命令来发布必要的 Passport 配置文件:
php artisan vendor:publish --tag=passport-config
安装和配置 Passport 后,您可以使用以下代码来创建访问令牌:
use Illuminate\Http\Request;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
// ...
public function createToken(Request $request, $name, array $scopes = [])
{
return $this->createTokenHelper($request, $name, $scopes);
}
}
在上面的代码中,我们将 HasApiTokens
trait 添加到 User
模型中,并创建了一个名为 createToken
的辅助方法,该方法用于创建新的访问令牌。
要创建新的访问令牌,请在 User
模型实例上调用 createToken
方法:
$user = Auth::user();
$token = $user->createToken($request, 'Token Name', ['read']);
在上面的代码中,我们使用 Auth::user()
方法获得当前经过身份验证的用户,调用 createToken
方法以创建新的访问令牌,并将创建的访问令牌存储在名为 $token
的变量中。
您可以使用以下代码来撤销访问令牌:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class User extends Authenticatable
{
// ...
public function revokeToken(Request $request, $tokenId)
{
$accessToken = $this->tokens()->where('id', $tokenId)->first();
if (!$accessToken) {
return;
}
DB::table('oauth_refresh_tokens')
->where('access_token_id', $tokenId)
->update(['revoked' => true]);
$accessToken->revoke();
}
}
在上面的代码中,我们创建了一个名为 revokeToken
的辅助方法,该方法用于撤销给定的访问令牌。
要撤销访问令牌,请将 User
模型实例作为第一个参数传递给 revokeToken
方法,并将要撤销的访问令牌的 ID 作为第二个参数传递。
在本文中,我们介绍了如何在 Laravel 中创建和管理访问令牌。如果您想了解有关 Laravel 和 Passport 的更多信息,请查看官方文档。