2020-03-06 18:13:30
围观(4367)
感觉 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 数据表里面插入了一条很随便的数据.
创建 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 了.
使用 TOKEN
先在 API 路由写入:
Route::middleware(['auth:airlock'])->group(function () { Route::get('/user', function (Request $request) { return $request->user(); }); });
这是一个路由群组,访问该路由群组内的路由就会触发 auth:airlock 中间件,用于认证 TOKEN 是否正确.
比如使用 PostMan :
注意,访问该路由需要在 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开发图像内容识别