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 相关文章推荐
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 PHP
phpMyAdmin链接MySql错误 个人解决方案
Dec 28 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php按字符无乱码截取中文的方法
Mar 27 PHP
PHP正则验证Email的方法
Jun 15 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
功能强大的PHP发邮件类
Aug 29 PHP
PHP实现简单用户登录界面
Oct 23 PHP
php经典趣味算法实例代码
Jan 21 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
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
PHP+APACHE实现用户论证的方法
2006/10/09 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
实现web打印的各种方法介绍及实现代码
2013/01/09 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
Python单例模式实例详解
2017/03/01 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
对python sklearn one-hot编码详解
2018/07/10 Python
Django实现表单验证
2018/09/08 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
python爬虫要用到的库总结
2020/07/28 Python
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
澳大利亚牛仔裤商店:Just Jeans
2016/10/13 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
编程用JAVA解析XML的方式
2013/07/07 面试题
初中同学聚会邀请函
2014/02/03 职场文书
中学生自我评价范文
2014/02/08 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
美术学专业求职信
2014/07/23 职场文书
终止劳动合同通知书
2015/04/16 职场文书
交流会主持词
2015/07/02 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL