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中文本数据翻页(留言本翻页)
Oct 09 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
php实现的常见排序算法汇总
Sep 08 PHP
PHP常用处理静态操作类
Apr 03 PHP
php简单实现sql防注入的方法
Apr 22 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
Nov 27 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 mvc开发模式的感想
2011/06/28 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
JS实现横向轮播图(中级版)
2020/01/18 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python+Django+apache的配置方法详解
2016/06/01 Python
python使用opencv读取图片的实例
2017/08/17 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
django 读取图片到页面实例
2020/03/27 Python
jupyter 导入csv文件方式
2020/04/21 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
什么是Python中的顺序表
2020/06/02 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
Python实现异步IO的示例
2020/11/05 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
生产班组长岗位职责
2014/01/05 职场文书
党员组织关系介绍信
2014/02/13 职场文书
党员教师一句话承诺
2014/05/30 职场文书
禁止酒驾标语
2014/06/25 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书