laravel怎么集成JWT(JSON Web Tokens)进行API认证_laravel JWT API认证集成方法
发布时间 - 2025-11-03 00:00:00 点击率:次首先安装 tymon/jwt-auth 包并发布配置文件,接着生成 JWT 密钥;然后修改 auth.php 中的 api 驱动为 jwt,同时在 User 模型中实现 JWTSubject 接口;之后创建 APIAuthController 处理登录和登出逻辑,最后在 api.php 中定义路由并应用 auth:api 中间件保护接口。
如果您正在开发一个基于 Laravel 的 API 应用,并希望实现无状态的用户认证机制,JWT(JSON Web Tokens)是一个理想的选择。它能够在客户端和服务器之间安全地传递用户身份信息。以下是将 JWT 集成到 Laravel 项目中进行 API 认证的具体步骤。
本文运行环境:MacBook Pro,macOS Sonoma
一、安装 tymon/jwt-auth 扩展包
要使用 JWT 功能,需要引入社区广泛使用的 tymon/jwt-auth Composer 包,它是 Laravel 中集成 JWT 的主流解决方案。
1、打开终端并进入您的 Laravel 项目根目录。
2、执行以下命令来安装 jwt-auth 包:
composer require tymon/jwt-auth
二、发布 JWT 配置文件
安装完成后,需要生成 JWT 的配置文件以便自定义令牌行为,例如过期时间、加密算法等。
1、运行以下 Artisan 命令以发布配置文件:
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
2、该操作会在 config/ 目录下创建一个名为 jwt.php 的配置文件,供后续修改使用。
三、生成 JWT 密钥
为了确保 token 的安全性,必须生成一个用于签名的密钥。这个密钥将被用来编码和解码 JWT。
1、在终端中执行以下命令生成 SECRET_KEY:
php artisan jwt:secret
2、此命令会自动在 .env 文件中添加一行 JWT_SECRET=随机字符串,无需手动设置。
四、配置 auth.php 支持 JWT 驱动
Laravel 的认证系统需要知道使用 JWT 作为驱动,因此需修改默认的身份验证配置。
1、打开 config/auth.php 文件。
2、找到 'guards' 数组中的 api 项,将其 driver 值从 token 修改为 jwt:
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
五、在 User 模型中引入 JWT Subject 协议
JWT 需要能够从用户模型中提取唯一标识符(通常是主键),因此需要让 User 类实现必要的接口。
1、打开 app/Models/User.php 文件(或您实际的用户模型路径)。
2、在类中引入 Tymon\JWTAuth\Contracts\JWTSubject 接口:
use Tymon\JWTAuth\Contracts\JWTSubject;
3、让 User 类实现该接口并添加两个必需方法:
public function getJWTIdentifier()
{
return $this->getKey(); // 返回主键值
}
public function getJWTCustomClaims()
{
return []; // 可添加自定义声明
}
六、创建 API 认证控制器处理登录与登出
需要创建一个控制器来处理用户的登录请求并返回 JWT 令牌,同时支持注销时使令牌失效。
1、使用 Artisan 命令生成控制器:
php artisan make:controller Auth/APIAuthController
2、在控制器中添加 login 方法,验证凭据后返回 token:
use JWTAuth;
use Illuminate\Http\Request;
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'));
}
3、添加 logout 方法用于退出登录:
public function logout()
{
JWTAuth::invalidate(JWTAuth::getToken());
return response()->json(['message' => 'Successfully logged out']);
}
七、定义 API 路由并应用中间件保护
通过路由注册认证端点,并使用 JWT 中间件保护需要身份验证的接口。
1、打开 routes/api.php 文件。
2、添加如下路由:
use App\Http\Controllers\Auth\APIAuthController;
Route::post('login', [APIAuthController::class, 'login']);
Route::middleware('auth:api')->group(functio
n () {
Route::post('logout', [APIAuthController::class, 'logout']);
Route::get('user', function () {
return auth()->user();
});
});
# laravel
# php
# word
# js
# json
# go
# composer
# 编码
# app
# macbook
# mac
# 中间件
# if
# require
# try
# catch
# Error
# Token
# 标识符
# 字符串
# 接口
# class
# public
# 并发
# function
# this
# macos
# 算法
# http
# 加密算法
# 配置文件
# 令牌
# 自定义
# 创建一个
# 身份验证
# 主键
# 是一个
# 您的
# 运行环境
# 如果您
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
如何做网站制作流程,*游戏网站怎么搭建?
如何用好域名打造高点击率的自主建站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel如何实现用户密码重置功能?(完整流程代码)
如何在万网自助建站平台快速创建网站?
简单实现jsp分页
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
LinuxCD持续部署教程_自动发布与回滚机制
如何破解联通资金短缺导致的基站建设难题?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Android自定义listview布局实现上拉加载下拉刷新功能
Android使用GridView实现日历的简单功能
Laravel安装步骤详细教程_Laravel环境搭建指南
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
如何快速生成ASP一键建站模板并优化安全性?
Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
Internet Explorer官网直接进入 IE浏览器在线体验版网址
清除minerd进程的简单方法
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Laravel集合Collection怎么用_Laravel集合常用函数详解
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
Swift中switch语句区间和元组模式匹配
JavaScript实现Fly Bird小游戏
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
WordPress 子目录安装中正确处理脚本路径的完整指南
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
非常酷的网站设计制作软件,酷培ai教育官方网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
在线制作视频的网站有哪些,电脑如何制作视频短片?
高性价比服务器租赁——企业级配置与24小时运维服务
Laravel如何创建自定义Facades?(详细步骤)
如何在建站主机中优化服务器配置?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
中国移动官方网站首页入口 中国移动官网网页登录
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
如何在阿里云部署织梦网站?
如何在云主机快速搭建网站站点?
如何在宝塔面板创建新站点?
微信小程序 canvas开发实例及注意事项
三星、SK海力士获美批准:可向中国出口芯片制造设备
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
javascript中的try catch异常捕获机制用法分析
如何在阿里云香港服务器快速搭建网站?

