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. Entity 类中加了@Id 注解后仍然出现org.hibernate.AnnotationException: No identifier specified for entity 错误

    查看网上的资料,应该是报错的实体类com.example.domain.p.User中没有添加加主键的注解@Id,这个是必须的.但是我的实体类中明明已经添加了@Id,为什么还会报这个错误呢? 后来检查 ...

  2. reactnative 笔记

    1.<FlatList/> _renderItem = ({item})=>{ return <View style={[styles.part4Row]}> <T ...

  3. React.js 小书

    http://huziketang.mangojuice.top/books/react/

  4. IDEA+Maven+Mybatis 巨坑:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.rao.mapper.UserMapper.findAll

    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.rao.mapper.User ...

  5. CCF 201812-3 CIDR合并

    CCF 201812-3 CIDR合并 //100分 93ms #include<stdio.h>//CCF上stdio.h比cstdio快!!! #include<string.h ...

  6. Mac上安装Python3虚拟环境(VirtualEnv)教程

    如果已经安装好pip3,那么执行命令安装virtualenv环境 pip3 install virtualenv 安装完成检测版本是否安装成功 virtualenv --version 创建新目录 M ...

  7. xshell && xftp 下载

    链接:https://pan.baidu.com/s/1aLdgOSshytIYhArkB7tghQ 提取码:fqjb

  8. 利用sftp迁移pve虚拟机

    首先在A主机进行虚拟机备份vzdump <vmid>在B主机利用sftp复制备份到A主机cd /var/lib/vz/dump/sftp root@192.168.25.140 回答yes ...

  9. [1-2] Dependence-Aware Service Function Chain Design and Mapping

    文献名称:Dependence-Aware Service Function Chain Design and Mapping 文献类型(期刊.硕论.博论):会议:Globecom 发表年份:2017 ...

  10. Re3 : Real-Time Recurrent Regression Networks for Visual Tracking of Generic Objects

    Re3 : Real-Time Recurrent Regression Networks for Visual Tracking of Generic Objects 2019-10-04 14:4 ...