Laravel实现ApiToken认证请求


Posted in PHP onOctober 14, 2019

1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 migration 文件, 我们需要更改 user 表的结构

2.我们需要为 user 表添加 api_token 字段, 也就是说我们的 token 是保存在数据库中的, 在合适的位置, 添加一行

$table->string('api_token', 60)->unique();

3.配置好数据库, 通过 php artisan migrate 命令生成 user 表

4.在user表中, 随便添加一条记录, 只要保证 api_token 这个字段设置为 123456 即可. 这样我们就生成了一个用户, 等下就可以 使用 123456 这个token 值来登录了.

5.返回到 路由文件 routes.php, 在里面添加一条测试路由, 并将其 用 laravel 的中间件保护起来

Route::group(['middleware' => ['auth.api']], function () { 
 Route::get('/t', function () {
  return 'ok';
 });
});

在此处, 使用的是 auth.api 中间件,中间件定义入下图:

Laravel实现ApiToken认证请求

在Middleware文件创建WebToken.php,然后在Kernel.php文件中注册该中间件

'auth.api' => \App\Http\Middleware\webToken::class,

6.打开刚刚创建的webToken中间件代码如下

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class webToken
{
 /**
  * Handle an incoming request.
  *
  * @param \Illuminate\Http\Request $request
  * @param \Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
  if (Auth::guard('api')->guest()) {
   return response()->json(['code' => 401,'msg' => '未设置token']);
  }

  return $next($request);
 }
}

代码中的Auth::guard(‘api')的api是config文件夹里auth.php文件

Laravel实现ApiToken认证请求

Laravel实现ApiToken认证请求

7.做了以上修改之后, 当我们以 /t 这个 url 路径向服务器直接发起请求时, 服务器就会返回一个 401 错误, 并且会返回一条 ‘未设置token' 这样的消息, 这也是我们之前在 handle() 方法中设置的. 也就是说 /t 已经被我们的 auth 中间件保护起来了. 如果想要我们的请求能够正常通过这个中间件, 就要提供 token.

8.由于我们之前在 user 表中添加了一条 api_token 为 123456 的数据, 所以现在我们再次向服务器请求 /t, 但是这次我们加入 api_token, 也就是

…/t?api_token=123456

正常情况下, 服务器就会返回 ‘ok' 了, 这也就是说明, auth 中间件允许这个请求通过. 而当我们把 123456 修改为其他值时, 这个请求也是无法通过 auth 中间件的.

以上这篇解决laravel中api验证jwt刷新token的一个问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
推荐文章系统(一)
Oct 09 PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php实现在多维数组中查找特定value的方法
Jul 29 PHP
php实现遍历多维数组的方法
Nov 25 PHP
yii分页组件用法实例分析
Dec 28 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
Zend Framework入门教程之Zend_Mail用法示例
Dec 08 PHP
php实现的二分查找算法示例
Jun 20 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 #PHP
Laravel 自动生成验证的实例讲解:login / logout
Oct 14 #PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 #PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 #PHP
Yii框架Session与Cookie使用方法示例
Oct 14 #PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 #PHP
解决laravel session失效的问题
Oct 14 #PHP
You might like
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
说明的比较细的php 正则学习实例
2008/07/30 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
PHP 图片处理
2020/09/16 PHP
JavaScript日历实现代码
2010/09/12 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
2012/12/11 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
深入理解Python3中的http.client模块
2017/03/29 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
浅谈Python基础—判断和循环
2019/03/22 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
电子商务专业自我鉴定
2013/12/18 职场文书
公务员综合考察材料
2014/02/01 职场文书
军人违纪检讨书
2014/02/04 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
廉政党课工作报告案例
2019/06/21 职场文书