Laravel5.5整合jwt实战教程

0 下载量 164 浏览量 更新于2024-08-28 收藏 321KB PDF 举报
本文主要介绍了如何在 Laravel 5.5 版本中集成 JWT (JSON Web Tokens) 来实现身份验证。使用的库是 `tymon/jwt-auth`,版本为 1.0.0-rc.5。 首先,通过 Composer 安装 JWT 库: ```bash composer require tymon/jwt-auth=1.0.0-rc.5 ``` 安装完成后,需要发布服务提供者并设置 JWT 的密钥: ```bash php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" php artisan jwt:secret ``` 接下来,需要在 `config/auth.php` 文件中进行配置。添加一个新的 guard(认证策略),这里命名为 'api',并指定使用 JWT 驱动: ```php return [ // ... 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], // 使用 JWT 'api' => [ 'driver' => 'jwt', // 使用 JWT 驱动 'provider' => 'apiUser', // 指定用户提供者 ], ], 'providers' => [ // ... 'apiUser' => [ 'driver' => 'eloquent', 'model' => App\ApiUser::class, // 指定 API 用户模型 ], ], ]; ``` 创建一个 API 控制器 `Api\AuthController`,在这个控制器中可以编写处理登录和刷新 JWT 的方法。例如,登录方法 `login` 可能会接收手机号和密码,然后验证这些凭据,并返回 JWT: ```php <?php namespace App\Http\Controllers\Api; use App\ApiUser; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Tymon\JWTAuth\Facades\JWTAuth; class AuthController extends Controller { public function __construct() { $this->middleware('auth:api', ['except' => ['login', 'refresh']]); } public function login(Request $request) { $credentials = $request->only('phone', 'password'); if (! $token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'invalid_credentials'], 401); } return $this->respondWithToken($token); } // 其他如 refresh 方法等... } ``` 在登录成功后,`JWTAuth::attempt()` 将返回 JWT 令牌,可以通过 `respondWithToken()` 方法返回给客户端。客户端可以在后续的 API 请求中使用此令牌来验证身份。 此外,为了保护已认证的 API 路由,可以在控制器或路由组中添加 `auth:api` 中间件,这样只有持有有效 JWT 的用户才能访问。 总结,Laravel 结合 JWT 实现身份验证主要包括以下步骤: 1. 安装 `tymon/jwt-auth` 库。 2. 发布服务提供者并设置 JWT 密钥。 3. 配置 `config/auth.php`,定义 JWT 认证策略和用户提供者。 4. 创建 API 控制器,处理登录、刷新 JWT 等操作。 5. 使用中间件保护 API 路由。 遵循以上步骤,开发者可以在 Laravel 应用中构建安全的 RESTful API,使用 JWT 进行身份验证。