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-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享
- 2024-12-24uniapp 连接之后会被立马断开是什么原因?-icode9专业技术文章分享
- 2024-12-24cdn 路径可以指定规则映射吗?-icode9专业技术文章分享
- 2024-12-24CAP:Serverless?+AI?让应用开发更简单
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享