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 相关文章推荐
Discuz 模板语句分析及知识技巧
Aug 21 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
PHP中source #N问题的解决方法
Jan 27 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
Sep 16 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
Jul 07 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 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
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
Ztree新增角色和编辑角色回显问题的解决
2016/10/25 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python关于反射的实例代码分享
2020/02/20 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Pandas之缺失数据的实现
2021/01/06 Python
教育实习生的自我评价分享
2013/11/21 职场文书
大学生学习党课思想汇报
2014/01/03 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
中考标语大全
2014/06/05 职场文书
业务员岗位职责
2015/02/03 职场文书
厉行节约工作总结
2015/08/12 职场文书
工程主管竞聘书
2015/09/15 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python
用Python实现屏幕截图详解
2022/01/22 Python