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

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

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

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 --clientWhich user ID should the client be assigned to? [0]: > 1What should we name the client? > TestWhere should we redirect the request after authorization? > http://example.com/callback
登录后复制

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

获取授权

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

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

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

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

获取访问令牌

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

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

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

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

使用访问令牌进行API请求

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

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

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

总结

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

以上就是详细介绍Laravel Passport的流程、配置和使用的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:如何使用PHP7.0进行多进程编程?
下一篇:如何使用PHP防止文件包含攻击

发表评论

关闭广告
关闭广告