首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel Sanctum可以使用Multiauth guard

基础概念

Laravel Sanctum 是 Laravel 框架中的一个轻量级认证系统,主要用于 SPA(单页应用)、移动应用和其他不需要传统会话认证的应用。它提供了基于令牌的认证方式,使得用户可以通过 API 进行认证。

Multiauth 是 Laravel 中的一个功能,允许你在同一个应用中使用多个认证 guard。每个 guard 可以有自己的用户表、认证逻辑和中间件。

相关优势

  1. 灵活性:使用 Multiauth 可以让你为不同的用户类型或应用部分设置不同的认证逻辑。
  2. 安全性:可以为不同的 guard 设置不同的权限和中间件,从而提高应用的安全性。
  3. 扩展性:随着应用的发展,可以轻松添加新的 guard 来处理新的认证需求。

类型

Laravel Sanctum 支持以下几种 guard 类型:

  1. Session Guard:基于会话的认证方式,适用于传统的 Web 应用。
  2. Token Guard:基于 API 令牌的认证方式,适用于 SPA 和移动应用。
  3. Sanctum Stateful Guard:Laravel Sanctum 提供的状态ful guard,用于处理需要保持状态的 API 请求。

应用场景

  1. SPA 应用:对于使用 Vue.js、React 等前端框架构建的单页应用,可以使用 Sanctum 的 Token Guard 进行认证。
  2. 移动应用:对于 iOS 和 Android 应用,可以使用 Sanctum 的 Token Guard 进行认证。
  3. 多用户系统:对于需要为不同类型的用户设置不同认证逻辑的应用,可以使用 Multiauth 来管理多个 guard。

遇到的问题及解决方法

问题:如何配置 Laravel Sanctum 使用 Multiauth guard?

解决方法

  1. 安装 Laravel Sanctum
  2. 安装 Laravel Sanctum
  3. 发布 Sanctum 配置文件
  4. 发布 Sanctum 配置文件
  5. 配置 config/auth.php: 在 config/auth.php 文件中,配置多个 guard。例如:
  6. 配置 config/auth.php: 在 config/auth.php 文件中,配置多个 guard。例如:
  7. 创建 Admin 模型和迁移文件
  8. 创建 Admin 模型和迁移文件
  9. 配置数据库迁移: 在 database/migrations 目录下创建的迁移文件中,定义 admins 表结构。例如:
  10. 配置数据库迁移: 在 database/migrations 目录下创建的迁移文件中,定义 admins 表结构。例如:
  11. 运行迁移
  12. 运行迁移
  13. 配置 Sanctum 状态ful 域: 在 config/sanctum.php 文件中,配置状态ful 域:
  14. 配置 Sanctum 状态ful 域: 在 config/sanctum.php 文件中,配置状态ful 域:
  15. .env 文件中配置 Sanctum 相关变量
  16. .env 文件中配置 Sanctum 相关变量

参考链接

通过以上步骤,你可以成功配置 Laravel Sanctum 使用 Multiauth guard,并根据不同的应用场景进行灵活的认证管理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel Sanctum API 授权

简单来说,前后端分离的项目,使用 token 验证登陆状态,可以选它;另外,同类型的还有 jwt 比较火 安装 Laravel 9 已经包含了 Laravel Sanctum,所以下面的步骤看看就行了...9默认是注释掉的,需要取消注释 API 令牌认证 发布 API Tokens 要开始为用户颁发令牌,你的 User 模型应使用 Laravel\Sanctum\HasApiTokens trait..., Notifiable; } Laravel 9已经默认添加了 要发布令牌,你可以使用 createToken 方法。...在存入数据库之前,API 令牌已使用 SHA-256 哈希加密过,但你可以使用 NewAccessToken 实例的 plainTextToken 属性访问令牌的纯文本值。...; 在处理由 Sanctum 验证的传入请求时,你可以使用 tokenCan 方法确定令牌是否具有给定的能力: if ($user->tokenCan('server:update')) { /

3K30
  • Laravel 7发行说明

    引入 Laravel 框架或其组件时,应始终使用版本约束,如 ^7.0,因为 Laravel 的主要版本确实包含非兼容性更改。我们会努力确保您可以在一天或更短的时间内更新到最新版本。...Laravel Sanctum Laravel Sanctum 由 Taylor Otwell建造。...Laravel Sanctum 为 SPA (单页应用程序),移动应用程序和基于令牌的简单 API 提供了轻巧的身份验证系统。 Sanctum 允许应用程序的每个用户生成多个 API 令牌。...这些令牌可以被授予能力/作用域,用于指定允许令牌执行哪些动作。 有关 Laravel Sanctum 的更多信息, 请查看 Sanctum 文档。...默认情况下,Laravel使用 mail 配置文件中的 default 选项指定的邮件驱动作为邮件驱动。然而,你可以通过 mailer 方法来使用特定的邮件驱动来发送邮件。

    9K20

    laravel 自定义中间件实现身份验证

    通过Laravel 用户认证我们知道了基于 api 的身份验证,实现方式有Laravel Sanctum API 授权 、 Laravel 使用 Json Web Token(JWT) 等,今天介绍一下自定义中间件实现身份验证...一个支持关键词搜索的列表,参数校验为'keyword' => 'string',,因为启用了该中间件,传空字符串时报错了,The keyword must be a string 按照我们通常理解关键词可以传...(string),也可以不传(null);这里可以传又分为空字符串和有值的字符串 不启用该中间件,传空字符串:参数校验'keyword' => 'string',,通过参数校验,我拿到空字符串。。...最终我选择不启用该中间件 中间件、中间件组 一、上面提到的Laravel Sanctum API 授权使用的是auth中间件 protected $routeMiddleware = [...'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,

    1.7K10

    竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。(2)模型工厂类

    Jetstream 为你的下一个项目提供了完美的起点,包括登录、注册、电子邮件验证、双因子认证、会话管理、通过 Laravel Sanctum 提供的 API 支持以及可选的团队管理。...Jetstream 是使用 Tailwind CSS 设计的,你可以选择 Livewire 或 Inertia 脚手架。...xxxxxxxxx', // password 'remember_token' => Str::random(10), ]; } } 由于在生成模型时可以使用新的...HasFactory trait,因此可以像以下方式使用模型工厂: use App\Models\User; User::factory()->count(50)->create(); 因为模型工厂现在是简单的...例如,你的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。

    2.7K41

    竟然有人质疑我还在用Laravel开发?别忘了PHP是最好的语言。

    Jetstream 为你的下一个项目提供了完美的起点,包括登录、注册、电子邮件验证、双因子认证、会话管理、通过 Laravel Sanctum 提供的 API 支持以及可选的团队管理。...Jetstream 是使用 Tailwind CSS 设计的,你可以选择 Livewire 或 Inertia 脚手架。...xxxxxxxxx', // password 'remember_token' => Str::random(10), ]; } } 由于在生成模型时可以使用新的...HasFactory trait,因此可以像以下方式使用模型工厂: use App\Models\User; User::factory()->count(50)->create(); 因为模型工厂现在是简单的...例如,你的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。

    2.5K60

    微软将为Linux 操作系统带来TEE的支持

    目前参与者计划向机密计算联盟提供几个开源项目,包括: Intel® Software Guard Extensions(Intel®SGX)软件开发工具包,这是基于SGX实现的,旨在帮助应用程序开发者使用受保护的安全区保护代码和数据免于在硬件层泄露或修改...开发者可以构建跨多个TEE体系结构运行的应用程序。 https://openenclave.io/ Red Hat Enarx是一个使用TEE保护应用程序提供硬件独立性的项目。...该项目的目标是:创建一种受信任的执行环境(TEE),可以创建和运行“私有,可替代,无服务器”应用程序的方法。换句话说,为TEE提供平台抽象。...早在 2016 年,MIT 的研究人员在 Sanctum 项目中尝试使用 RISC-V 实现 Intel SGX 类似的功能基础PoC。...Keystone作为Sanctum的后续版本在Sanctum的基础上使用了PMP以增强monitor本身的安全性,同时也有计划简化用户空间的开发库。

    1.8K20

    Laravel 8 正式发布,一起来看看有哪些新特性吧

    、双因子认证(2FA)、会话管理、基于 Laravel Sanctum 的 API 支持、以及可选的团队管理等功能。...Jetstream 使用的 CSS 框架是 Tailwind CSS,并且提供了 Livewire 和 Inertia 脚手架选项,你可以任选其一进行前端组件开发。...该功能可以有效降低迁移文件的数量,并且在测试时提升性能。 优化访问频率 Laravel 8 优化了之前已经存在的访问频率限制功能 —— 支持向后兼容 throttle 中间件,并且提供了更高的灵活性。...时间测试辅助函数 在 Laravel 中,一直都可以通过 PHP Carbon 库完全控制时间的修改,Laravel 8 则在此基础上往前更进一步 —— 在测试时使用一个更加方便的辅助函数来操作时间:...$this->travelBack(); 使用这些方法时,时间会在每个测试之间重置。

    2.6K30

    Pyramid 中混合认证策略

    因此,考虑是否可以为 JSON 路由指定一个单独的身份验证策略,或者是否有其他方法来实现这一目标。2....解决方案方案一:使用 pyramid_multiauth 包Pyramid_multiauth 包提供了一种简单的方法来在 Pyramid 中使用多个身份验证策略。...最后,在视图中使用 pyramid_multiauth 提供的认证装饰器来保护视图:@view_config(route_name='api_view', renderer='json',require_csrf...request): # 视图代码方案二:编写自定义身份验证策略也可以编写一个自定义的身份验证策略,该策略可以根据请求属性将请求分发到不同的身份验证策略。...最后,在视图中使用自定义身份验证策略:@view_config(route_name='api_view', renderer='json', require_csrf=False)@multiauth.authenticated

    7710

    【PHP 随记】—— laravel 目录结构分析

    |-- database.php |-- filesystems.php |-- hashing.php |-- logging.php |-- mail.php |-- queue.php |-- sanctum.php...database.php:数据库的配置文件; filesystems.php:文件系统(如文件存储等)的配置文件; (4) \textbf{database 目录} :包含数据填充和迁移文件以及模型工厂类,还可以把它作为...后期使用的外部静态文件(js、css、图片等)都需要放到 Public 目录。...(10) \textbf{vendor 目录} :主要是存放第三方的类库文件;laravel 思想主要是共同的开发,不要重复的造轮子(例如,里面可能存在验证码类,上传类,邮件类),该目录还存放 laravel...注意如果要使用 composer 软件管理的,composer 下载的类库都是存放在该目录下面的。

    3.3K10

    Laravel源码解析之用户认证系统(一)

    使用Laravel的开发者都知道,Laravel自带了一个认证系统来提供基本的用户注册、登录、认证、找回密码,如果Auth系统里提供的基础功能不满足需求还可以很方便的在这些基础功能上进行扩展。...| | Laravel支持通过不同的Guard来认证用户,这里可以定义Guard的用户数据提供者的细节: | 使用什么driver以及对应的Model或者table...Laravel 自带支持使用 Eloquent 和数据库查询构造器来检索用户。当然,你可以根据需要自定义其他提供器。...所以上面的配置文件的意思是Laravel认证系统默认使用了web guard配置项, 配置项里使用的是看守器是SessionGuard,使用的用户提供器是 EloquentProvider 提供器使用的...定义了用户提供器契约(interface),所有用户提供器都要实现这个接口里定义的抽象方法,因为实现了统一的接口所以使得无论是Laravel 自带的还是自定义的用户提供器都能够被Guard使用

    3K30

    Laravel源码解析之用户认证系统(二)

    上一节我们介绍了Laravel Auth系统的基础知识,说了他的核心组件都有哪些构成,这一节我们会专注Laravel Auth系统的实现细节,主要关注 Auth也就是 AuthManager是如何装载认证用的看守器...} } register的流程很简单,就是验证用户输入的数据没问题后将这些数据写入数据库生成用户,其中密码加密采用的是bcrypt算法,如果你需要改成常用的salt加密码明文做哈希的密码加密方法可以在...用户认证系统的主要细节梳理完后我们就知道如何定义我们自己的看守器(Guard)或用户提供器(UserProvider)了,首先他们必须实现各自遵守的契约里的方法才能够无缝接入到Laravel的Auth系统中...,然后还需要将自己定义的Guard或Provider通过 Auth::extend、 Auth::provider方法注册返回Guard或者Provider实例的闭包到Laravel中去,Guard和UserProvider...的自定义不是必须成套的,我们可以单独自定义Guard使用默认的EloquentUserProvider,或者让默认的SessionGuard使用自定义的UserProvider。

    2.1K30

    通过修改Laravel Auth使用salt和password进行认证用户详解

    Auth非常强大易用,不过在Laravel的用户认证系统中用户注册、登录、找回密码这些模块中用到密码加密和认证算法时使用的都是bcrypt,而很多之前做的项目用户表里都是采用存储salt + password...加密字符串的方式来记录用户的密码的,这就给使用Laravel框架来重构之前的项目带来了很大的阻力,不过最近自己通过在网上找资料、看社区论坛、看源码等方式完成了对Laravel Auth的修改,在这里分享出来希望能对其他人有所帮助...$plain) == $authPassword['password']; } } 最后我们修改auth配置文件让Laravel在做Auth验证时使用我们刚定义的Provider, 修改config/auth.php...Auth使用,好了做完这些修改后Laravel的Auth在做用户登录验证的时候采用的就是自定义的salt + password的方式了。...注:使用Laravel版本为5.2

    2.9K30

    如何扩展Laravel Auth来满足项目需求

    之前写过两篇文章分别介绍了Laravel Auth认证系统的构成和实现细节知道了Laravel是如何应用看守器和用户提供器来进行用户认证的,但是在现实工作中大部分时候产品用户体系是早就有的这种情况下就无法使用框架自带的...想了解实现细节的可以回看下面两篇文章 Laravel源码解析之用户认证系统(一) Laravel源码解析之用户认证系统(二) 在介绍用户认证系统基础的时候提到过Laravel自带的注册和登录验证用户密码时都是去验证采用...bcypt加密存储的密码,但是很多已经存在的老系统中用户密码都是用盐值加明文密码做哈希后存储的,如果想要在这种老系统中应用Laravel开发项目的话那么我们就不能够再使用Laravel自带的登录和注册方法了...的看守器完全符合我上面说的要求,所以我们就通过 Auth::extend()方法将 JwtGuard注册到系统中去: JwtGuard的源码可以去github上查看,你也可以按照项目需求实现契约里规定的方法来定义项目应用的看守器...if ($token = $this->guard('api')->attempt($credentials)) { $return['status_code'] = 200;

    2.7K20

    MIT研究人员正研发基于RISC-V的安全芯片方案

    项目中尝试使用 RISC-V 实现 Intel SGX 类似的功能基础PoC,最新版本的Sanctum使用Rocket开放核实现了PUF,attestation以及verifiedboot相关的构建信任链条的核心功能...和Intel SGX的复杂且封闭的设计和实现完全不同,基于 RISC-V 的产品可以做到完全的开放,这让芯片生态颠覆有了可能。...https://eprint.iacr.org/2018/427 https://github.com/mit-sanctum 同时,MIT和UC Berkeley合作开发了另外一个叫Keystone...的项目,Keystone在Sanctum的基础上使用了PMP(类似软件中PaX UDEREF)以增强本身的安全性,不论是Sanctum还是Keystone都是开放的设计和实现,也就意味着任何人都可以去审计后门和漏洞...grsec-code-analysis/PAX_MEMORY_UDEREF.md 这一点和Intel SGX的复杂且封闭的设计和实现完全不同,这也意味着一个让Google都感到害怕的Intel ME系统可以由从硬件到软件都是自由开放的系统来替换

    1.3K30
    领券