使用 Passport 掌握 Laravel 身份验证:分步指南
身份验证是现代 Web 应用程序的基石。在 Laravel 中,Passport 提供了完整的 OAuth2 服务器实现,可以无缝地实现 API 身份验证。本指南将引导您完成设置 Laravel Passport 的整个过程,从安装到保护和测试 API。
简介
为什么使用 Laravel Passport?
Laravel Passport 通过与 Laravel 生态系统紧密集成来简化 OAuth2 身份验证的复杂性。有了护照,您可以:
- 安全地验证 API 用户身份。
- 为移动和网络客户端生成个人访问令牌。
- 轻松管理令牌过期和撤销。
先决条件
开始之前,请确保您拥有:
- 对 Laravel 的基本了解。
- 安装并配置数据库的 Laravel 项目(建议 v10.x 或更高版本)。
- 已安装 PHP 8.0 或更高版本。
如果您尚未设置项目,请使用以下内容创建一个项目:
composer create-project --prefer-dist laravel/laravel passport-auth cd passport-auth
第 1 步:安装 Laravel Passport
安装包
运行以下命令将 Passport 添加到您的项目中:
composer require laravel/passport
发布和迁移护照文件
发布 Passport 迁移和配置文件:
php artisan vendor:publish --tag=passport-migrations php artisan migrate
第 2 步:配置 Laravel Passport
安装加密密钥和客户端
运行安装命令:
php artisan passport:install
这会生成加密密钥并在您的数据库中创建 OAuth 客户端。记下输出,尤其是客户端 ID 和机密。
可选:创建个人访问客户端
要显式创建个人访问客户端,请运行:
php artisan passport:client --personal
第 3 步:更新模型
将 HasApiTokens 特征添加到您的用户模型中:
use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; // Other properties... }
第 4 步:更新身份验证配置
在 config/auth.php 中将 Passport 配置为 API Guard 的驱动:
'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
第5步:注册护照路线
在AppProvidersAppServiceProvider中,加载Passport的路由:
use Laravel\Passport\Passport; public function boot(): void { Passport::routes(); Passport::tokensExpireIn(now()->addDays(15)); Passport::refreshTokensExpireIn(now()->addDays(30)); Passport::personalAccessTokensExpireIn(now()->addMonths(6)); }
第 6 步:构建身份验证 API 端点
添加路线
在routes/api.php中定义API路由:
use App\Http\Controllers\AuthController; Route::post('/register', [AuthController::class, 'register']); Route::post('/login', [AuthController::class, 'login']); Route::middleware('auth:api')->get('/user', [AuthController::class, 'user']);
创建身份验证控制器
实施身份验证方法:
composer create-project --prefer-dist laravel/laravel passport-auth cd passport-auth
第 7 步:设置加密密钥的权限
确保安全访问护照密钥:
composer require laravel/passport
验证权限:
php artisan vendor:publish --tag=passport-migrations php artisan migrate
预期输出:
php artisan passport:install
第 8 步:测试 API
使用 Postman 或任何 API 客户端来测试端点:
- 注册: 使用姓名、电子邮件和密码向 /register 发送 POST 请求。
- 登录:使用电子邮件和密码向 /login 发送 POST 请求。
- 获取用户数据:使用授权标头中的令牌向 /user 发送 GET 请求。
最佳实践
- 在生产中使用 HTTPS。
- 定期轮换加密密钥。
- 彻底验证输入。
- 限制令牌范围以提高安全性。
结论
恭喜!您已经使用 Laravel Passport 成功实现了 API 身份验证。此设置为保护 API 提供了坚实的基础。探索高级 Passport 功能,例如范围、令牌撤销和客户端凭据,以进一步增强应用程序的安全性。
以上是使用 Passport 进行 Laravel 身份验证的详细内容。更多信息请关注PHP中文网其他相关文章!

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你应该关心DependencyInjection(DI),因为它能让你的代码更清晰、更易维护。1)DI通过解耦类,使其更模块化,2)提高了测试的便捷性和代码的灵活性,3)使用DI容器可以管理复杂的依赖关系,但要注意性能影响和循环依赖问题,4)最佳实践是依赖于抽象接口,实现松散耦合。

是的,优化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)优化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,并避免使用

theKeyStrategiestosiminificallyBoostphpapplicationPermenCeare:1)useOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)优化AtabaseInteractionswithPreparedStateTemtStatementStatementSandProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。