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实现多服务器session共享之NFS共享的方法
Mar 16 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
php导出生成word的方法
Dec 25 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 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
综合图片计数器
2006/10/09 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
PHP实现的MD5结合RSA签名算法实例
2017/10/07 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
js实现黑白div块画空心的图形
2018/12/13 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python功能键的读取方法
2015/05/28 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python之dict(或对象)与json之间的互相转化实例
2018/06/05 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
解决pytorch 交叉熵损失输出为负数的问题
2020/07/07 Python
python中time.ctime()实例用法
2021/02/03 Python
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
何玥事迹观后感
2015/06/16 职场文书
企业团队精神心得体会
2016/01/19 职场文书
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
Valheim服务器 Mod修改安装教程 【ValheimPlus】
2022/12/24 Servers