laravel认证生态系统概述

Laravel提供了一些与身份验证相关的软件包。在继续之前,我们将回顾Laravel中的常规身份验证生态系统,并讨论每个软件包的预期目的。

首先,请考虑身份验证的工作原理。使用网络浏览器时,用户将通过登录表单提供其用户名和密码。如果这些凭据正确,则应用程序将在用户的会话中存储有关经过身份验证的用户的信息。发布给浏览器的cookie包含会话ID,以便对应用程序的后续请求可以将用户与正确的会话相关联。接收到会话cookie后,应用程序将基于会话ID检索会话数据,注意身份验证信息已存储在会话中,并将用户视为“已身份验证”。

当远程服务需要进行身份验证才能访问API时,通常不使用cookie,因为没有Web浏览器。而是,远程服务根据每个请求将API令牌发送到API。应用程序可以对照有效API令牌表验证传入令牌,并“认证”与该API令牌相关联的用户正在执行的请求。

Laravel的内置浏览器身份验证服务

Laravel包含内置的身份验证和会话服务,通常可以通过AuthSessionFacades访问它们。这些功能为从Web浏览器发起的请求提供基于cookie的身份验证。它们提供了允许您验证用户凭据并验证用户身份的方法。另外,这些服务将自动在用户的会话中存储正确的数据并发出正确的会话cookie。本文档中包含有关如何使用这些服务的讨论。

Jetstream / Fortify

如本文档中所述,您可以手动与这些身份验证服务交互以构建应用程序自己的身份验证层。但是,为了帮助您更快地入门,我们发布了免费软件包,这些软件包为整个身份验证层提供了强大而现代的脚手架。这些软件包是Laravel Jetstream和Laravel Fortify。

Laravel Fortify是Laravel的无头(headless)身份验证后端,它实现了本文档中的许多功能,包括基于cookie的身份验证以及其他功能,例如( two-factor)双因素身份验证和电子邮件验证。Laravel Jetstream是一个UI,它使用由Tailwind CSS,Laravel Livewire和/或Inertia.js提供支持的美观、现代的UI来使用Fortify的身份验证服务并将其公开。Laravel Jetstream除了提供基于浏览器的cookie身份验证之外,还包括与Laravel Sanctum的内置集成以提供API令牌身份验证。Laravel的API身份验证产品将在下面讨论。

Laravel的API身份验证服务

Laravel提供了两个可选的软件包来帮助您管理API令牌和认证使用API​​令牌发出的请求:Passport和Sanctum。请注意,这些库和基于Laravel的内置cookie的身份验证库不是互斥的。这些库主要关注API令牌身份验证,而内置身份验证服务则关注基于cookie的浏览器身份验证。许多应用程序将同时使用Laravel的基于内置cookie的身份验证服务和Laravel的API身份验证程序包之一。

Passport

Passport是OAuth2身份验证提供程序,提供各种OAuth2“授权类型”,使您可以颁发各种类型的令牌。通常,这是用于API身份验证的强大而复杂的程序包。但是,大多数应用程序都不需要OAuth2规范提供的复杂功能,这会使用户和开发人员感到困惑。另外,从历史上看,开发人员对于如何使用Passport等OAuth2身份验证提供程序对SPA应用程序或移动应用程序进行身份验证感到困惑。

Sanctum

为了应对OAuth2的复杂性和开发人员的困惑,我们着手构建一个更简单,更简化的身份验证程序包,该程序包既可以处理来自Web浏览器的第一方Web请求,也可以处理通过令牌的API请求。Laravel Sanctum的发布实现了这一目标,对于那些除了API之外还将提供第一方Web UI或将由单页面应用程序提供支持的应用程序,Laravel Sanctum的发布应被视为首选和推荐的身份验证程序包。与后端Laravel应用程序或提供移动客户端的应用程序分开存在。

Laravel Sanctum是Web / API混合身份验证程序包,可以管理应用程序的整个身份验证过程。这是可能的,因为当基于Sanctum的应用程序收到请求时,Sanctum将首先确定该请求是否包括引用已验证会话的会话cookie。Sanctum通过调用我们前面讨论的Laravel的内置身份验证服务来实现此目的。如果未通过会话cookie对请求进行身份验证,Sanctum将检查请求中的API令牌。如果存在API令牌,Sanctum将使用该令牌对请求进行身份验证。要了解有关此过程的更多信息,请查阅Sanctum的“工作原理”文档。

Laravel Sanctum是我们选择包含在Laravel Jetstream身份验脚手架中的API程序包,因为我们认为它最适合大多数Web应用程序身份验证需求。

总结与选择

总之,如果将使用浏览器访问您的应用程序,则您的应用程序将使用Laravel的内置身份验证服务。

接下来,如果您的应用程序提供了API,则您将在Passport或Sanctum之间进行选择,以为您的应用程序提供API令牌认证。通常,应该尽可能使用Sanctum,因为它是API身份验证,SPA身份验证和移动身份验证的简单,完整的解决方案,包括对“范围(scopes)”或“功能(abilities)”的支持。

当您的应用程序绝对地需要OAuth2规范提供的所有功能时,可以选择Passport。

而且,如果您想快速入门,我们很高兴向您推荐Laravel Jetstream,这是启动新的Laravel应用程序的快速方法,该应用程序已经使用了我们首选的Laravel内置身份验证服务和Laravel Sanctum身份验证。

用以下一张图示例如何选择:

参考 http://laravel.p2hp.com/docs/8.x/authentication#ecosystem-overview

本文首发于lenix的博客,转载请注明出处 ,地址 https://blog.p2hp.com/archives/7482

如何选择laravel的身份认证系统相关推荐

  1. 统一身份认证系统的简单看法

    [事件背景]洋葱服务为什么没被成功接盘?_搜狐科技_搜狐网 https://www.sohu.com/a/124452755_354899 今天无意中看到这则新闻,发现人家洋葱认证服务已经停运1年多啦 ...

  2. 生物识别最新进展:动态密码语音无监督身份认证系统通过科技成果鉴定

    近日,由中国电子学会主持召开的"基于动态密码语音的无监督身份认证系统"科技成果鉴定会在清华大学举办,AI科技大本营受邀出席. 该成果由清华大学.北京得意音通技术有限责任公司共同完成 ...

  3. 架构师之路 — API 经济 — 身份认证系统

    目录 文章目录 目录 身份认证系统 Cookie Auth Token Auth AK/SK Auth AK/SK Auth 实现原理 Step 1:获取 AK/SK Step 2:构造一个 HTTP ...

  4. android 身份认证技术,Android平台上基于人脸识别的身份认证系统的设计与实现

    摘要: 随着移动互联网与人工智能技术的发展,基于个人特征的生物识别技术代替传统的身份验证方式已经是大势所趋.而人脸识别是生物识别技术的一个重要组成部分,拥有其他生物识别技术没有的独特优势.本文主要针对 ...

  5. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  6. Django的身份认证系统

    1 . 在Django中使用身份认证系统 Django的身份认证系统实际上是一个app,该app叫做django.contrib.auth,它在django contrib模块下 使用时只需要在set ...

  7. python初级编写:身份认证系统

    效果如下: ====================================== 欢迎进入身份认证系统v1.0 1.0登录 2.0退出 3.0认证 4.0修改密码 ============== ...

  8. PyQt5 + Python3.7 + OpenCV人脸识别身份认证系统(附源码)

    基于PyQt5 + Python3.7 + OpenCV实现的人脸识别身份认证系统,附源码. 技术选型 PyQt5 + Python3.7 + OpenCV 功能概述 实现人员注册,信息修改,人脸识别 ...

  9. 宁盾DKEY短信动态密码身份认证系统

    1.产品介绍 宁盾DKEY短信动态密码身份认证系统是一套提供短信密码生成.发送.认证和审计功能的系统,将短信密码与原有账号密码认证结合,实现双因子认证保障,有效保护企业应用系统安全. 短信认证与硬件令 ...

最新文章

  1. 如何备份思科、锐捷、Juniper的配置文件
  2. 清理你入侵后的三个重要痕迹
  3. Spring JDBC-Spring事务管理之数据库事务基础知识
  4. 关系数据库的设计理论
  5. 代理模式【介绍、静态代理、动态代理、入门、应用】
  6. SQL validation failed.Column ‘content‘ not found in any table
  7. ios开发--企业帐号发布
  8. [运动规划算法]Minimum Snap轨迹规划
  9. 商城订单实时语音提醒功能JavaScript部分 附提醒语音音频文件
  10. 基于CNN+tensorflow对搜狐新闻进行分类并对函数进行封装
  11. Golang bytes源码分析
  12. 第8章第15节:制作企业宣传册的公司团队第二页面 [PowerPoint精美幻灯片实战教程]
  13. VirtualBox免费虚拟机使用简介、3G无线上网的Virtualbox实现
  14. 网络视频录像机地址无法修改如何解决
  15. uBuntu20.04安装Qt5.15.2出现qt.qpa.plugin: Could not load the Qt platform plugin “xcb“的问题解决
  16. 服务器读取磁盘文件,服务器硬盘狂读写
  17. CFT:Multi-Camera Calibration Free BEV Representation for 3D Object Detection——论文笔记
  18. 项目三 Java开发迷宫游戏
  19. Windows安装nginx并配置端口转发
  20. Drools(8):WorkBench使用

热门文章

  1. SpringCloud—笔记(一)零基础篇
  2. 学术期刊会议相关碎碎念
  3. verilog 中的冒泡排序法
  4. 65536问题理解v4
  5. Linux- 网络配置
  6. Matlab把二维矩阵画成三维图像
  7. python 不能读取xlsx格式的excel解决方案,安装1.2.0版本
  8. Python为何会发展的如此之快?带你纵观全球Python趋势!
  9. windows下使用cmd命令文件批量重命名批量修改后缀重命名快捷键
  10. 解决农产品滞销难题,农村淘宝有何绝招?