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
建立文件交换功能的脚本(三)
Oct 09 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 PHP
Laravel 实现添加多语言提示信息
Oct 25 PHP
php输出形式实例整理
May 05 PHP
XAMPP升级PHP版本实现步骤解析
Sep 04 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
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
杏林同学录(七)
2006/10/09 PHP
php连接mssql的一些相关经验及注意事项
2013/02/05 PHP
php stripslashes和addslashes的区别
2014/02/03 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
微信小程序云开发(数据库)详解
2019/05/17 Javascript
javascript如何实现create方法
2019/11/04 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
Python操作mongodb的9个步骤
2018/06/04 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
python excel多行合并的方法
2020/12/09 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
英国顶级家庭折扣店:The Works
2017/09/06 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
银行服务感言
2014/03/01 职场文书
母校寄语大全
2014/04/10 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
2015年妇女工作总结
2015/05/14 职场文书
主持稿开场白
2015/06/01 职场文书
python 实现图片特效处理
2022/04/03 Python