auth:api 在 Laravel 的 Routing , Middleware , API Authentication 主题中都有出现。

一.

在 Routing 部分可以知道 auth:api 是中间件的名字,代表某个中间件实现,使用方式为 Route::middleware('auth:api')。

二.

在 Middleware 部分可以知道 auth:api 冒号后面的是 中间件参数,多个参数就用逗号分隔,也就是说 'api' 是 auth 中间件的参数。auth 中间件在 app/Http/Kernel.php 的路由中间件里定义:protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class ]。

Middleware 中间件都是在 handle 方法里对请求进行验证的,handle 前面两个参数是 $request, Closure $next。中间件参数在 handle 的默认参数后面,例如 user:creater,editer 就表示 user 中间件的 handle 方法的第三个参数值是 creater, 第四个参数值是 editer。

对于 Auth 中间件来说,参数值 api 表示所使用的 guard 是 api,我们可以看其所继承的父类实现:

// Illuminate\Auth\Middleware\Authenticate->handle()

public function handle($request, Closure $next, ...$guards)
{
$this->authenticate($request, $guards); return $next($request);
}

里面的验证所使用的就是下面要讲的 Auth 功能类(AuthManager)。当验证不通过,会抛出 AuthenticationException。

默认的 app/Http/Middleware/Authenticate 包含一个 redirectTo 方法,当我们构建 api 应用时,验证未通过并不需要重定向。

那么可以注释掉 redirectTo,然后在 handler.php 中处理 AuthenticationException。

三.

在 API Authentication 部分,config/auth.php 配置有多个 guards,分别有自己的 driver 和 providers。

另外 Auth Facade (AuthManager) 提供了 Auth::guard() 方法用于决定 Auth 所使用的 guard。

Auth(Facade)提供了统一的方法来处理用户认证检测、驱动的扩展,通过更改配置而不是代码来使用不同的驱动。

Auth 内置了两种驱动的实现,AuthManager->createSessionDriver($name, $config), AuthManager->createTokenDriver($name, $config)。

如果你想更进一步了解 API Authentication 的运行过程,建议阅读一下 createTokenDriver() 内部实例化的 TokenGuard 类。

TokenGuard 会顺序检测 "query request"、"input request"、"header 键为 Authentication 值为 bearer xxx",从中获取 token 值;接着根据配置中的 provider 的值创建 provider 具体实例来验证 token。

有关 auth:api 与 Auth 的意义大致如此。

相关:[PHP] 浅谈 Laravel Authentication 的 guards 与 providers

相关:[PHP] 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别

相关:[PHP] 浅谈 Laravel 三大验证方式的区别, auth:api, passport, auth:airlock

Link:https://www.cnblogs.com/farwish/p/11800803.html

[PHP] 浅谈 Laravel Authentication 的 auth:api的更多相关文章

  1. [PHP] 浅谈 Laravel Authentication 的 guards 与 providers

    从文档的简单介绍上来讲,有一些抽象. 个人感觉,对于概念上的大多数不理解主要还是来自于 文档不是讲设计思路,而是实际操作. 查看英文文档,通常来说可以给你最准确的直觉,而本地翻译一般比较字面或者带有理 ...

  2. 浅谈Laravel框架的CSRF

    前文 CSRF攻击和漏洞的参考文章: http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html Laravel默认是开启了CSRF功能, ...

  3. 企业应用:浅谈 “数据权限” 和 查询 API 设计

    背景 多数企业应用都需要对数据权限进行控制,如:某个用户只能看到某个范围的数据(数据行).某个用户只能看到某几列数据(数据列).本文以数据行级别的权限控制为范例,谈谈如何设计权限模型和查询 API. ...

  4. 浅谈android反调试之 API判断

    反调试:利用Java层API来判断Android程序是否是处于被调试下. 1.直接调用系统的android.os.Debug.isDebuggerConnected()方法 我们进行动态调试的时候,其 ...

  5. 浅谈 asp.net core web api

    希望通过本文能够了解如下内容: ControllerBase Attributes Action的返回值类型 ControllerBase 当我们开始实际上项目, 真正实操 anc 时, 肯定会用到 ...

  6. laravle6.0-IOC-DI浅谈

    1.什么是IOC,DI IOC(Inversion of Control)控制反转:ioc意味着,你将自己设计好的对象交给容器来控制,而不是传统的在你的对象内部直接控制.比如: 人 操控 手机 做一些 ...

  7. 示例浅谈PHP与手机APP开发,即API接口开发

    示例浅谈PHP与手机APP开发,即API接口开发 API(Application Programming Interface,应用程序接口)架构,已经成为目前互联网产品开发中常见的软件架构模式,并且诞 ...

  8. 浅谈REST API

    浅谈REST API 说明: 本文部分内容根据其它网络文章编写,如有版权问题请及时通知. 背景 发迹于互联网的REST,在国内国外混得可谓是风生水起,如今又进入电信行业的视野,连TMF都将其作为战略项 ...

  9. 浅谈Windows API编程

    WinSDK是编程中的传统难点,个人写的WinAPI程序也不少了,其实之所以难就难在每个调用的API都包含着Windows这个操作系统的潜规则或者是windows内部的运行机制…… WinSDK是编程 ...

随机推荐

  1. CSS float 父元素高度自适应

    <html> <head><title></title><style type="text/css">*{margin: ...

  2. .net 异常

    ArgumentNullException 当将空引用(在 Visual Basic 中为 Nothing)传递给不接受它作为有效参数的方法时引发的异常.

  3. 重装Zend Studio后如何恢复之前的设置

    Program Files (x86)\Zend\Zend Studio 10.0.0\configuration\.settings 这个目录下的文件备份下来,重装安装Zend Studio后覆盖到 ...

  4. linux中/dev/null与2>&1讲解

    首先先来看下几种标识的含义: /dev/null 表示空设备文件 0 表示stdin标准输入 1 表示stdout标准输出 2 表示stderr标准错误 先看/dev/null command > ...

  5. react 沉思录

    react = Virtual DOM + component + data flow + jsx 核心是Virtual DOM结构的状态维护.渲染机制及UI系统的DOM组织功能: 基于Virtual ...

  6. webpack.config.js配置信息的说明

    module.exports = { entry: "./src/main.js", output: { filename: "build/build.js" ...

  7. Landscaping Gym - 101128F (网络流)

    Problem F: Landscaping \[ Time Limit: 1 s \quad Memory Limit: 256 MiB \] 题意 题意是给出一个\(n*m\)的格子,其中一些是低 ...

  8. CF1245D: Shichikuji and Power Grid

    CF1245D: Shichikuji and Power Grid 题意描述: 给定\(n\)个点\((n\leq2000)\),在第\(i\)个点上建立一个基站需要\(c_i\)的代价,连接两个点 ...

  9. podium服务器端的微前端开发框架

    podium 是一个比较全的微前端开发框架. 具有以下特性 自治开发 强大的组合能力 基于约定的开发模式 podium 包含的组件 podlets 页面片段,是一个独立的http 服务,独立运行的,实 ...

  10. 【cf比赛记录】Codeforces Round #600 (Div. 2)

    Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...