Laravel 中怎么实现 JWT 身份验证-icode9专业技术文章分享
2024/10/20 6:03:10
本文主要是介绍Laravel 中怎么实现 JWT 身份验证-icode9专业技术文章分享,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在 Laravel 中使用 JWT(JSON Web Token)进行身份验证是一个常见的需求,尤其是在 API 开发中。这里有一个简单的指南,帮助你在 Laravel 项目中实现 JWT 身份验证。
步骤 1:安装 Laravel-JWT 包
推荐使用 tymon/jwt-auth
这个包来实现 JWT 身份验证。首先,通过 Composer 安装它:
composer require tymon/jwt-auth
Bash
步骤 2:发布配置文件
安装完成后,发布 JWT 配置文件:
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
Bash
这将在 config
目录下生成 jwt.php
文件。
步骤 3:生成密钥
接下来,你需要生成 JWT 密钥。运行以下命令:
php artisan jwt:secret
Bash
这将生成一个新的密钥并将其添加到 .env
文件中,密钥通常是以 JWT_SECRET
作为键。
步骤 4:配置 Auth
在 config/auth.php
中更新 guards
部分,将 api
作为 JWT 驱动:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'jwt', 'provider' => 'users', ], ],
PHP
步骤 5:创建控制器
在你的项目中创建一个控制器,来处理用户注册和登录等功能:
php artisan make:controller AuthController
Bash
在 AuthController
中,你可以编写如下代码:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Tymon\JWTAuth\Facades\JWTAuth; use Tymon\JWTAuth\Exceptions\JWTException; class AuthController extends Controller { public function register(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), ]); return response()->json(['message' => 'User registered successfully'], 201); } public function login(Request $request) { $credentials = $request->only('email', 'password'); try { if (!$token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'invalid_credentials'], 401); } } catch (JWTException $e) { return response()->json(['error' => 'could_not_create_token'], 500); } return response()->json(compact('token')); } public function logout() { JWTAuth::invalidate(JWTAuth::getToken()); return response()->json(['message' => 'User logged out'], 200); } public function me() { return response()->json(auth()->user()); } }
PHP
步骤 6:定义路由
在 routes/api.php
中定义路由,以便用户可以注册、登录、查看个人信息等:
use App\Http\Controllers\AuthController; Route::post('register', [AuthController::class, 'register']); Route::post('login', [AuthController::class, 'login']); Route::get('logout', [AuthController::class, 'logout'])->middleware('auth:api'); Route::get('me', [AuthController::class, 'me'])->middleware('auth:api');
PHP
步骤 7:保护路由
通过在路由中使用 middleware('auth:api')
,你可以保护特定的 API 路由,确保用户必须通过 JWT 身份验证才能访问。
步骤 8:使用 Postman 或其他工具测试
现在你可以使用 Postman 进行 API 测试:
- 注册用户: 向
/api/register
发送一个 POST 请求,包含name
、email
和password
。 - 登录用户: 向
/api/login
发送一个 POST 请求,包含email
和password
,你将收到一个 JWT 作为响应。 - 访问受保护的路由: 在请求头中将
Authorization
设置为Bearer YOUR_JWT_TOKEN
,然后可以访问/api/me
或其他受保护的路由。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
这篇关于Laravel 中怎么实现 JWT 身份验证-icode9专业技术文章分享的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20WebSocket入门:轻松掌握WebSocket基础
- 2024-11-19WebSocket入门指南:轻松搭建实时通信应用
- 2024-11-19Nacos安装资料详解:新手入门教程
- 2024-11-19Nacos安装资料:新手入门教程
- 2024-11-19升级 Gerrit 时有哪些注意事项?-icode9专业技术文章分享
- 2024-11-19pnpm是什么?-icode9专业技术文章分享
- 2024-11-19将文件或目录压缩并保留到指定的固定目录怎么实现?-icode9专业技术文章分享
- 2024-11-19使用 tar 命令压缩文件并且过滤掉某些特定的目录?-icode9专业技术文章分享
- 2024-11-18Nacos安装入门教程
- 2024-11-18Nacos安装入门:轻松掌握Nacos服务注册与配置管理