📅  最后修改于: 2023-12-03 15:25:07.517000             🧑  作者: Mango
tymon/jwt-auth是一个非常受欢迎的 Laravel 扩展包,使用 JSON Web Token (JWT) 进行身份认证。JWT 是一个开放标准 (RFC 7519),定义了一种紧凑的、自包含的格式,用于作为 JSON 在不同系统中安全地传输信息。
可以从 GitHub 或 Packagist 上找到 tymon/jwt-auth。
在 Laravel 应用中,可以使用 Composer 快速安装 tymon/jwt-auth:
composer require tymon/jwt-auth
这将自动安装最新版本的 tymon/jwt-auth,以及所有必需的依赖项。
在 config/app.php 文件中,将 Tymon\JWTAuth\Providers\LaravelServiceProvider 类添加到 providers 数组中:
'providers' => [
// ...
Tymon\JWTAuth\Providers\LaravelServiceProvider::class,
],
使用以下 Artisan 命令发布配置文件:
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
这会在 config 目录中创建一个名为 jwt.php 的配置文件。该文件包含 JWT 认证的各种设置,例如算法、密钥、有效期等。
在应用程序中的任何位置,您都可以使用 config('jwt.key') 等函数来访问这些设置。
为了安全起见,应该生成一个随机的 JWT 密钥。可以使用 Artisan 命令来生成:
php artisan jwt:secret
这会向 .env 文件中添加新的 JWT_SECRET 值。
在认证过程中,可以使用 Auth::attempt() 方法进行身份验证。但是,对于一个 API 或将来需要跨域身份验证的应用程序,使用 JWT 更好。
使用 tymon/jwt-auth,可以创建和签名 JWT,将其发送到客户端,并在客户端中存储它们。在此之后,客户端可以在每个请求中包含 JWT,以便服务端可以验证用户。
以下示例生成 JWT,签署它,并将其发送回客户端:
use Tymon\JWTAuth\Facades\JWTAuth;
// user information
$user = [
'name' => 'John Doe',
'email' => 'john@example.com',
'role' => 'admin',
];
// generate JWT for user
$token = JWTAuth::fromUser($user);
// sign JWT and add it to response
return response()->json([
'token' => $token,
]);
如果客户端包含 JWT,则可以使用 tymon/jwt-auth 验证它:
use Tymon\JWTAuth\Facades\JWTAuth;
// get JWT from request
$jwt = request()->bearerToken();
// attempt to verify JWT
$user = JWTAuth::parseToken()->authenticate();
// return authenticated user
return $user;
有了 JWT,服务端可以轻松地验证用户身份并提供相应的资源。