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 相关文章推荐
基于MySQL分区性能的详细介绍
May 02 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
php基于dom实现的图书xml格式数据示例
Feb 03 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
php 猴子摘桃的算法
Jun 20 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
laravel框架实现去掉URL中index.php的方法
Oct 12 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 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导入导出Excel代码
2015/07/07 PHP
php脚本运行时的超时机制详解
2016/02/17 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
正则表达式基本语法及表单验证操作详解【基于JS】
2017/04/07 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
Python编程中对super函数的正确理解和用法解析
2016/07/02 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
职业教育毕业生求职信
2013/11/09 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
小学假期安全广播稿
2014/09/28 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
同事欢送会致辞
2015/07/31 职场文书
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android