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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
smarty表格换行实例
Dec 15 PHP
php中explode的负数limit用法分析
Feb 27 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
PHP7.0版本备注
Jul 23 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 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
Yii操作数据库的3种方法
2014/03/11 PHP
PHP基本语法总结
2014/09/06 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
PHP加密解密实例分析
2015/12/25 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
php文件上传类的分享
2017/07/06 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
vuejs指令详解
2017/02/07 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
详解详解Python中writelines()方法的使用
2015/05/25 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
python集合是否可变总结
2019/06/20 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Django中密码的加密、验密、解密操作
2019/12/19 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
员工培训心得体会
2013/12/30 职场文书
和平主题的演讲稿
2014/01/12 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
《雨点》教学反思
2014/02/12 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书