首页 php框架 Laravel 详细介绍Laravel Passport的流程、配置和使用

详细介绍Laravel Passport的流程、配置和使用

Apr 23, 2023 am 09:17 AM

Laravel Passport是Laravel框架下的一款完整的OAuth2服务端实现, 允许你通过API对用户身份进行认证和授权,使得API服务可以在无需暴露用户凭据的情况下进行访问,这大大降低了客户端开发的难度,提高了应用程序的安全性。

Laravel Passport背后的OAuth2协议是业界标准,所以你可以使用相同的工具和流程,轻松地在其他语言和框架中集成OAuth2认证和授权。下面,本文将详细介绍Laravel Passport的流程、配置和使用。

安装Passport

在使用Laravel Passport之前,需要先安装它。我们可以使用composer命令来安装Passport,命令如下:

composer require laravel/passport
登录后复制

启用Passport

Laravel Passport安装完毕后,需要将其服务提供程序添加到config/app.php文件中的providers数组中,打开该文件,找到providers数组并添加Laravel Passport的服务提供程序,如下所示:

'providers' => [
    // Other Service Providers...
    Laravel\Passport\PassportServiceProvider::class,
],
登录后复制

创建数据库表

在使用Laravel Passport之前,还需要新建Passport所需的数据库表,可以使用以下artisan命令来生成迁移文件:

php artisan migrate
登录后复制

执行以上命令后,Laravel Passport将在你的数据库中创建几个新的表来保存OAuth2客户端、Access Token和Refresh Token等数据。

发布配置文件

执行以下artisan命令,将Passport的配置文件发布到Laravel项目的config目录下:

php artisan vendor:publish --tag=passport-config
登录后复制

创建密钥

到此,我们已经做好了使用Laravel Passport所需的前置条件。接下来,我们需要使用以下artisan命令来生成加密密钥:

php artisan passport:keys
登录后复制

以上命令将生成encryption keys,用于签署cookie和access token等数据。

配置Passport

完成上述步骤后,我们接下来需要配置Passport,以便使其运行。在config/auth.php配置文件中,将api驱动程序的driver更改为passport,并设置guards和providers,如下所示:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
登录后复制

在同一个文件中配置providers,如下所示:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],
登录后复制

一旦配置文件完成, API认证便已经就绪。

创建Route

接下来,我们需要在app/Http路由文件中创建API路由,如下所示:

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
登录后复制

在以上路由示例中,定义了auth:api中间件,用于验证请求是否来自已认证用户,若非已认证用户,则在验证失败时返回401状态码。

创建Client

现在,我们已经完成了应用程序配置和API路由的设置,接下来需要创建API客户端。在Laravel Passport中,提供了artisan命令passport:client,用于创建新的OAuth2客户端。执行如下所示的命令:

php artisan passport:client --client
登录后复制

在执行命令后,我们需要输入客户端名称和授权重定向URI,如下所示:

php artisan passport:client --client
Which user ID should the client be assigned to? [0]:
 > 1
What should we name the client?
 > Test
Where should we redirect the request after authorization?
 > http://example.com/callback
登录后复制

以上命令将创建一个新的OAuth2客户端,用于向此应用程序的API发送请求。我们将得到一个客户端ID和客户端密钥,用于后面的API请求中。

获取授权

客户端已经创建完成,并获得了授权重定向URI,现在我们需要向该URI发送一个请求,用以获取授权。之后,Passport将会为客户端生成访问令牌,并返回给该客户端。使用如下所示的URL,替换其中的Client ID和重定向URI:

http://your-app.com/oauth/authorize?client_id={client-id}&redirect_uri={redirect-uri} &response_type=code&scope=
登录后复制

在输入URL后,如下所示的OAuth2授权屏幕将会显示:

oauth_screen

在点击'Authorize'按钮后,将会发生授权并重定向到重定向URI。

获取访问令牌

现在,我们已经获得了授权,并且客户端已经被授予访问API的权限。我们需要使用OAuth2授权码,与客户端密钥换取访问令牌,我们可以使用如下所示的curl命令,从API授权服务器获得访问令牌:

$ curl -X POST -H "Accept: application/json" -F "client_id={client-id}" -F "client_secret={client-secret}" -F "grant_type=authorization_code" -F "code={code}" -F "redirect_uri={redirect-uri}" http://your-app.com/oauth/token
登录后复制

执行以上命令后,将得到如下所示的JSON对象,其中包含access_token和refresh_token等信息:

{
    "token_type": "Bearer",
    "expires_in": 86400,
    "access_token": "{access-token}",
    "refresh_token": "{refresh-token}",
}
登录后复制

使用访问令牌进行API请求

现在,我们已经获得了访问令牌,我们可以使用访问令牌与API进行请求。我们需要在API请求头部中增加Authorization头,并设置Bearer鉴权方案,将访问令牌作为令牌内容即可,如下所示:

$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'http://your-app.com/api/user', [
    'headers' => [
        'Authorization' => 'Bearer '.$accessToken,
        'Accept' => 'application/json',
    ],
]);
登录后复制

在以上代码中,我们将访问令牌以Bearer TOKEN 的格式提交到API服务端进行验证,成功后将得到API的响应结果。

总结

在本文中,我们讲述了Laravel Passport的流程、配置和使用。使用Laravel Passport,我们可以快速地为API应用程序添加安全的认证和授权,同时支持OAuth2协议,与其他编程语言和框架实现OAuth2授权的应用程序进行互操作,这使得开发者能够快速地构建安全性高、易于使用的API应用程序。

以上是详细介绍Laravel Passport的流程、配置和使用的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

django或laravel哪个更好? django或laravel哪个更好? Mar 28, 2025 am 10:41 AM

Django和Laravel都是全栈框架,Django适合Python开发者和复杂业务逻辑,Laravel适合PHP开发者和优雅语法。1.Django基于Python,遵循“电池齐全”哲学,适合快速开发和高并发。2.Laravel基于PHP,强调开发者体验,适合小型到中型项目。

Laravel和后端:为Web应用程序提供动力逻辑 Laravel和后端:为Web应用程序提供动力逻辑 Apr 11, 2025 am 11:29 AM

Laravel是如何在后端逻辑中发挥作用的?它通过路由系统、EloquentORM、认证与授权、事件与监听器以及性能优化来简化和增强后端开发。1.路由系统允许定义URL结构和请求处理逻辑。2.EloquentORM简化数据库交互。3.认证与授权系统便于用户管理。4.事件与监听器实现松耦合代码结构。5.性能优化通过缓存和队列提高应用效率。

哪个是更好的PHP或Laravel? 哪个是更好的PHP或Laravel? Mar 27, 2025 pm 05:31 PM

PHP和Laravel不是直接可比的,因为Laravel是基于PHP的框架。1.PHP适合小型项目或快速原型开发,因其简单直接。2.Laravel适合大型项目或高效开发,因其提供丰富功能和工具,但学习曲线较陡,性能可能不如纯PHP。

Laravel是前端还是后端? Laravel是前端还是后端? Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp,设计ForweBapplicationDevelopment.itfocusessonserver-sideLogic,databasemagemention和Applicationstructure和CanBeintegratedWithFrontendTechnologiesLikeLikeVue.jsorreActeReacterVue.jsorreActforforfull-stackDevefloct。

laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

Laravel的多功能性:从简单站点到复杂系统 Laravel的多功能性:从简单站点到复杂系统 Apr 13, 2025 am 12:13 AM

选择Laravel开发项目是因为其灵活性和强大功能适应不同规模和复杂度的需求。Laravel提供路由系统、EloquentORM、Artisan命令行等功能,支持从简单博客到复杂企业级系统的开发。

Laravel如何学习 怎么免费学习Laravel Laravel如何学习 怎么免费学习Laravel Apr 18, 2025 pm 12:51 PM

想要学习 Laravel 框架,但苦于没有资源或经济压力?本文为你提供了免费学习 Laravel 的途径,教你如何利用网络平台、文档和社区论坛等资源,从入门到掌握,为你的 PHP 开发之旅奠定坚实基础。

为什么Laravel如此受欢迎? 为什么Laravel如此受欢迎? Apr 02, 2025 pm 02:16 PM

Laravel受欢迎的原因包括其简化开发过程、提供愉快的开发环境和丰富的功能。1)它吸收了RubyonRails的设计理念,结合PHP的灵活性。2)提供了如EloquentORM、Blade模板引擎等工具,提高开发效率。3)其MVC架构和依赖注入机制使代码更加模块化和可测试。4)提供了强大的调试工具和性能优化方法,如缓存系统和最佳实践。

See all articles