不败君

前端萌新&初级后端攻城狮

简单使用Laravel 7的Airlock

简单使用Laravel 7的Airlock

2020-03-06 18:13:30

围观(2798)

感觉 Laravel 6 出生并没多久,现在 Laravel 又出新版本了,真的想说 已经学不动了.

简单看了一下 Laravel 7 新版本更新的东西,有两个比较常用也实用的功能.

一个就是 [HTTP 客户端] 在之前,请求第三方的 API 接口,都是使用 CURL 或者 Guzzlehttp 包.

现在 Laravel 7 更新了 HTTP 请求方式,变得更加简单,代码也更加简洁了.

具体可以看下文档: https://learnku.com/docs/laravel/7.x/http-client/7487


本文主要想写的是 Airlock 轻量级 API 认证.

在之前的小程序开发 或 公众号 / APP 开发,都是用团队或自己写的方式去生成 TOKEN, 也偶尔会有项目是用了第三方包生成 TOKEN 的,比如 JWT-Auth

在去年这个时候,博主也写了一篇 JWT-Auth 的使用文章: Laravel 安装 JWT-Auth实现 API 认证

现在 Laravel 推出了 Airlock, 让开发者在这方面就轻松多了.

可以看文档进行简单的安装 / 配置 Airlock.


创建一个用户

本文仅仅是尝试下新功能,所以博主是直接操作数据库,往 users 数据表里面插入了一条很随便的数据.

tp1.png


创建 TOKEN

在 API 路由写一句代码:

Route::get('create_token/{user}', 'UserController@create_token');

以上路由仅仅为了体验下 Airlock ,所以 访问某个用户 ID,就会生成该用户的 TOKEN.

请勿在生产环境或项目开发中使用.


创建控制器

打开 CMD 或者 GIT 或者其他命令行软件,访问到该项目根目录,执行:

php artisan make:controller UserController

生成了用户的控制器后,写一个 create_token 的方法,比如这样:

public function create_token(User $user)
{
    $token = $user->createToken('token-name');
    return $token->plainTextToken;

}

注意: 不要漏掉了 use 一下 User 模型.


生成 TOKEN

此时访问 域名/api/create_token/1 就能生成该用户的 TOKEN 了.

tp2.png


使用 TOKEN

先在 API 路由写入:

Route::middleware(['auth:airlock'])->group(function () {
    Route::get('/user', function (Request $request) {
        return $request->user();
    });
});

这是一个路由群组,访问该路由群组内的路由就会触发 auth:airlock 中间件,用于认证 TOKEN 是否正确.

比如使用 PostMan :

tp3.png

注意,访问该路由需要在 Header 中添加一个参数名为 Authorization 值为生成的 TOKEN,且在 TOKEN 前需要携带上关键词:Bearer

Bearer 和 TOKEN 之间还有一个空格.


限制 TOKEN 可用时间

如果跟着本文使用过了 Airlock ,可以发现多次生成 TOKEN ,旧的 TOKEN 是不会失效的.

所以限制 TOKEN 可用时间会让 API 接口更加保险.

打开 airlock 配置文件(位于 config 目录下),设置 expiration 项即可,注意,expiration 的值单位为分钟.

比如:

'expiration' => 1,

则为 TOKEN 一分钟后就到期,需要重新生成,


另外 Airlock 还提供了注销某个 TOKEN 之类的功能,具体可看官方或 learnku 的中文文档

第 1 条附言    2020-10-26 19:30:48

Airlock 已改名为 Sanctum,项目地址:https://github.com/laravel/sanctum

本文地址 : bubaijun.com/page.php?id=167

版权声明 : 未经允许禁止转载!

上一篇文章: Laravel多表查询优化

下一篇文章: PHP开发图像内容识别

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语