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

如何在两个不同的前端和后端域名中使用Laravel Sanctum?

在两个不同的前端和后端域名中使用Laravel Sanctum,您需要进行以下步骤:

  1. 安装 Laravel Sanctum:在 Laravel 项目中执行以下命令安装 Laravel Sanctum 包:
代码语言:txt
复制
composer require laravel/sanctum
  1. 配置 Laravel Sanctum:在项目的 config/auth.php 文件中,将 api 守卫的驱动程序更改为 sanctum,如下所示:
代码语言:txt
复制
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
        'hash' => false,
    ],
],
  1. 生成 Sanctum 相关的数据库表:在 Laravel 项目中执行以下命令生成 Sanctum 相关的数据库迁移文件并执行迁移:
代码语言:txt
复制
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
  1. 配置 CORS:在 Laravel 项目中安装 fruitcake/laravel-cors 包,执行以下命令:
代码语言:txt
复制
composer require fruitcake/laravel-cors

然后,在 config/cors.php 文件中进行跨域配置,例如:

代码语言:txt
复制
return [
    'paths' => ['api/*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['https://frontend-domain.com', 'https://backend-domain.com'],
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => true,
];
  1. 创建前端和后端域名的路由:在前端域名和后端域名的路由文件中定义相应的路由,例如: 在前端域名中的路由文件:
代码语言:txt
复制
use Illuminate\Support\Facades\Http;

Route::get('/api/sanctum/csrf-cookie', function () {
    return Http::get('https://backend-domain.com/sanctum/csrf-cookie');
});

Route::post('/api/login', function () {
    $response = Http::post('https://backend-domain.com/login', [
        'email' => 'email@example.com',
        'password' => 'password',
    ]);

    return $response->json();
});

在后端域名中的路由文件:

代码语言:txt
复制
use App\Http\Controllers\AuthController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->group(function () {
    Route::get('/user', [UserController::class, 'index']);
});

Route::post('/login', [AuthController::class, 'login']);
  1. 在前端中使用 Sanctum 进行身份验证:在前端代码中,首先通过访问 /api/sanctum/csrf-cookie 路由获取 CSRF 令牌,然后使用令牌进行登录请求,例如:
代码语言:txt
复制
fetch('https://frontend-domain.com/api/sanctum/csrf-cookie', {
    credentials: 'include'
}).then(() => {
    fetch('https://frontend-domain.com/api/login', {
        method: 'POST',
        credentials: 'include',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            email: 'email@example.com',
            password: 'password',
        }),
    }).then(response => {
        if (response.ok) {
            // 登录成功
        } else {
            // 登录失败
        }
    });
});
  1. 在后端中使用 Sanctum 进行身份验证:在后端控制器中,使用 Sanctum 的 EnsureFrontendRequestsAreStateful 中间件来验证请求是否来自前端域名,例如:
代码语言:txt
复制
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $credentials = $request->validate([
            'email' => 'required|email',
            'password' => 'required',
        ]);

        if (Auth::attempt($credentials)) {
            $request->session()->regenerate();

            return response()->json(['message' => 'Authenticated']);
        }

        return response()->json(['message' => 'Invalid credentials'], 401);
    }
}

这样,您就可以在两个不同的前端和后端域名中成功使用 Laravel Sanctum 进行身份验证了。请注意,以上示例仅供参考,您可能需要根据自己的具体项目结构和需求进行适当的调整。

关于 Laravel Sanctum 的更多信息,您可以参考腾讯云提供的 Laravel Sanctum 的产品文档链接:Laravel Sanctum 产品文档

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

相关·内容

Laravel Jetstream是什么以及如何入门?

Laravel Jetstream取代了旧版Laravel中可用的Laravel认证UI。 在本教程中,我将向你快速介绍什么是Laravel Jetstream以及如何开始使用它。...它包括以下组件: 登录与注册功能 邮箱验证 双重认证 会话管理 通过Laravel Sanctum提供API支持 Laravel Jetstream取代了旧版Laravel中可用的Laravel认证UI...之后,需要运行 artisan jetstream:install 并指定要使用的开发前端使用的堆栈: 如果想将 Livewire 和 Blade 结合使用,则运行以下命令: php artisan jetstream...配置文件中,你可以进行一些更改,例如启用和禁用不同的功能,例如: 'features' => [ Features::registration(), Features:...API Laravel Jetstream使用Laravel Sanctum提供简单的基于令牌的API。

6.5K20

Laravel Sanctum API 授权

Laravel Sanctum 为 SPA(单页应用程序)、移动应用程序和基于令牌的、简单的 API 提供轻量级身份验证系统。...简单来说,前后端分离的项目,使用 token 验证登陆状态,可以选它;另外,同类型的还有 jwt 比较火 安装 Laravel 9 已经包含了 Laravel Sanctum,所以下面的步骤看看就行了..." php artisan migrate 接下来,如果您想利用 Sanctum 对 SPA 进行身份验证,您应该将 Sanctum 的中间件添加到您应用的 app/Http/Kernel.php 文件中的...9默认是注释掉的,需要取消注释 API 令牌认证 发布 API Tokens 要开始为用户颁发令牌,你的 User 模型应使用 Laravel\Sanctum\HasApiTokens trait...修改 sanctum 的配置文件中的 expiration 选项(默认为 null),此选项设置的数字表示多少分钟后过期: // 365天后过期 'expiration' => 525600, 如果您的程序中配置了

3.1K30
  • Laravel 7发行说明

    引入 Laravel 框架或其组件时,应始终使用版本约束,如 ^7.0,因为 Laravel 的主要版本确实包含非兼容性更改。我们会努力确保您可以在一天或更短的时间内更新到最新版本。...Laravel Sanctum 为 SPA (单页应用程序),移动应用程序和基于令牌的简单 API 提供了轻巧的身份验证系统。 Sanctum 允许应用程序的每个用户生成多个 API 令牌。...Laravel 7 允许为单个应用配置多个邮件驱动。在 mail 配置文件中的每个邮件驱动都拥有它们自己的配置以及自己独特的 「transport」,这允许你的应用使用不同的邮件服务来发送某些邮件。...默认情况下,Laravel 将使用 mail 配置文件中的 default 选项指定的邮件驱动作为邮件驱动。然而,你可以通过 mailer 方法来使用特定的邮件驱动来发送邮件。...在先前版本的 Laravel 中, database 队列的健壮性被认为无法满足生产环境的需求。但是,Laravel 7 针对使用基于 MySQL 8+ 数据库队列的应用进行了改进。

    9K20

    Homestead + laravel-mix 环境下 hmr 的两种玩法

    本文介绍两种不同的玩法。...首先假定你已经创建了一个 laravel 项目,进行了相关配置(.env 配置及绑定测试域名,如:laravel.test)并已装好了后端依赖 玩法一:使用虚拟机中的 Node 环境 因为 Homestead...在虚拟机终端中执行yarn run hot,然后在浏览器中使用绑定的测试域名(如:laravel.test)访问 34.修改 JS 等,自动编译后浏览器中页面即自动更新 玩法二:使用宿主机中的 Node...与玩法一中不一样,不再需要特别在 hmrOptions 中指定 devServer 和 host 和 port,使用默认的就好(事实上也不能像前面那样指定,因为会出现 IP/端口 冲突) 3.在宿主机终端中执行...yarn run hot,然后在浏览器中使用绑定的测试域名(如:laravel.test)访问4.

    1.6K10

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

    、双因子认证(2FA)、会话管理、基于 Laravel Sanctum 的 API 支持、以及可选的团队管理等功能。...Jetstream 使用的 CSS 框架是 Tailwind CSS,并且提供了 Livewire 和 Inertia 脚手架选项,你可以任选其一进行前端组件开发。...模型工厂类 从 Laravel 8 开始,Eloquent 模型工厂将基于类进行管理,从而支持不同工厂之间的关联关系,新的模型工厂调用语法如下所示,相比之前可读性更好: use App\Models\User...; User::factory()->count(50)->create(); // 使用工厂类中定义的 "suspended" 关联方法 User::factory()->count(5)->suspended...时间测试辅助函数 在 Laravel 中,一直都可以通过 PHP Carbon 库完全控制时间的修改,Laravel 8 则在此基础上往前更进一步 —— 在测试时使用一个更加方便的辅助函数来操作时间:

    2.6K30

    招聘|听说你们最近很想听女孩子的声音。

    声甜人美的hr小姐姐坐等来撩~ 【域名产品后端研发】 岗位职责: 1. 负责腾讯云域名产品(DNSPod)及备案系统的后端开发; 2....熟练使用PHP、至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等)、有PHP项目的实战经验; 2....熟悉云计算、有云产品使用经验者优先。 【云市场产品后端研发】 岗位职责: 1. 负责腾讯云市场产品系统的后端研发和维护; 2. 负责腾讯云市场产品相关功能的开发和迭代;  3....熟练使用PHP、至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等)、有PHP项目的实战经验; 2....岗位要求: 熟练使用PHP,至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等),有PHP项目的实战经验; 熟练使用mysql/redis/memcache等数据库;有mysql

    45910

    DNSPod广招产品和研发人才

    在这紧张的市场环境中,你们等了很久的DNSPod机会来啦!!!话不多说,小伙伴们请直接看招聘信息吧! 【域名产品后端研发(4人)】 岗位职责: 1....负责备案系统的功能开发。 岗位要求: 1. 熟练使用PHP、至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等)、有PHP项目的实战经验; 2....熟悉云计算、有云产品使用经验者优先。 【云市场产品后端研发(3人)】 岗位职责: 1. 负责腾讯云市场产品系统的后端研发和维护; 2. 负责腾讯云市场产品相关功能的开发和迭代;  3....熟练使用PHP、至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等)、有PHP项目的实战经验; 2....系统的架构规划、功能实现、性能优化等工作。  岗位要求: 1. 熟练使用PHP,至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等),有PHP项目的实战经验; 2.

    44310

    【Laravel系列7.4】安全相关

    // 使用 Inertia 栈安装 Jetstream... php artisan jetstream:install inertia composer require laravel/sanctum...中间件守护 在 Laravel 的认证体系中,中间件有守卫的职责,包括在配置文件和 Auth 的常用方法中都有 guard 这个单词的出现。我们在源码中主要就来看一下它的中间件是如何进行认证守护的。...整个认证守卫的过程就完成了。 加密解密 对于加密来说, Laravel 框架直接使用的就是 OpenSSL 提供的 AES-256 和 AES-128 加密。...主要就是 encrypt() 加密和 decrypt() 解密这两个函数。...哈希 和上面的 Crypt 加密一样,Hash 门面使用的其实就是 password_hash() 的加密方式,Laravel 也只是对它进行了一个简单的封装。

    3.6K40

    这里有一个加入腾讯的机会,速戳

    域名产品后端研发 岗位职责: 1. 负责腾讯云域名产品(DNSPod)及备案系统的后端开发; 2. 负责域名管理相关功能的实现,包括域名注册、解析等功能开发; 3....熟练使用PHP、至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等)、有PHP项目的实战经验; 2....岗位职责: 1.负责腾讯云市场相关产品web前端页面的开发,维护和优化工作; 2.参与腾讯云市场相关产品前端框架的搭建,公共组件的开发和维护; 3.获取客户需求,协助产品团队制定产品的UX交互;4.协助行业解决方案团队...腾讯云市场产品PHP后端研发工程师 岗位要求: 1. 熟练使用PHP;至少熟悉并使用过其中一种PHP开源框架(如:CI、Laravel、Lumen等);有PHP项目的实战经验; 2....通过腾讯云技术认证或同等资格认证的优先录取。 岗位职责: 1. 负责腾讯云市场产品系统的后端研发和维护; 2. 负责腾讯云市场产品相关功能的开发和迭代;3.

    54810

    深入比较Laravel Herd与ServBay的性能特点

    ServBay 的一个关键特点是能够快速切换不同的软件版本。这种灵活性对于需要在不同环境中测试和部署应用程序的开发者至关重要。...两个平台都支持多种技术栈和编程语言,使开发者能够根据项目需求选择适合的工具和环境。其中ServBay还可以支持多版本同时运行,方便开发者灵活操作。...而ServBay 着重于多 PHP 实例管理、自定义域名和 SSL 配置等功能,提供广泛的软件包版本和套件,是一个全面的网站开发环境。为开发者提供更多的灵活性和定制性选项。...Laravel Herd更新维护比较慢,有更新不及时的情况。Laravel Herd 更适用于专注于 Laravel 的后端开发者。...ServBay的覆盖范围更广,包含了从Nodejs开发的前端Web开发者和使用PHP开发的后端开发者,特别是需要测试代码在不同版本组件中运行表现的全栈Web开发者。

    31010

    【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端uniapp

    主要功能及特点语言资源共享:解决了前后端分离项目中语言资源同步的问题。在传统的前后端分离开发中,前端和后端通常需要各自维护一套语言包,这不仅增加了开发成本,还容易出现语言不一致的情况。...该工具可以将 Laravel 后端的本地化文件转换为前端可用的 JSON 格式,使得前后端可以使用同一套语言资源,减少了重复工作。...方便前端使用:将 Laravel 的语言文件转换为 JSON 后,前端可以很方便地加载和使用这些语言数据。...使用场景适用于基于 Laravel 后端和 Vue 前端的前后端分离项目,尤其是需要实现多语言功能的应用,如国际化的网站、Web 应用程序等。...普通 APP 翻译版本:一般是在 APP 开发过程中,针对不同语言环境制作不同的语言版本。开发时会将翻译后的文本等资源内置到 APP 安装包中,用户下载对应的语言版本 APP 来使用。

    3800

    创建并运行一个新的 Laravel 项目

    经过 PHP 入门到实战系列的基础学习,接下来我们就可以正式开始 Laravel 框架的学习和使用了。而这一切都需要从创建一个新的 Laravel 项目开始。...laravel/laravel blog --prefer-dist 效果和上面使用安装器安装的一样,使用这个方式安装的一个好处是可以安装旧版本的 Laravel 项目,比如要安装 5.6 版本的项目...:Composer 配置文件 webpack.mix.js:Laravel Mix Webpack 配置文件,用于编译和打包前端资源 package.json:配置前端资源依赖和脚本(类似于 composer.json...env() 辅助函数传入键名 SPARKPOST_SECRET 来获取,这样做有两个好处:一是将敏感信息存放到版本控制系统(如 Git、Svn)之外,提高了系统的安全性;此外还可以方便我们在不同环境中...(每个环境有自己独立的 .env 文件)使用不同的配置值,提高了代码的复用性和灵活性。

    6.9K30

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

    组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。...Jetstream 为你的下一个项目提供了完美的起点,包括登录、注册、电子邮件验证、双因子认证、会话管理、通过 Laravel Sanctum 提供的 API 支持以及可选的团队管理。...Jetstream 是使用 Tailwind CSS 设计的,你可以选择 Livewire 或 Inertia 脚手架。...Eloquent 模型工厂 已完全重写为基于类的工厂,并有完美的关联支持。例如 Laravel 中的 UserFactory 是这样写的: 的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。

    2.8K41

    在 Laravel 项目中编写第一个 Vue 组件

    和 CSS 框架一样,Laravel 不强制你使用什么 JavaScript 客户端框架,但是开箱对 Vue.js 提供了良好的支持,如果你更熟悉 React 的话,也可以将默认的脚手架代码替换成 React...既然已经有这么丰富的资源,关于 Vue.js 的介绍和使用,我这里就不赘述了,我们重点来介绍如何在 Laravel 中通过 Vue 组件构建前端页面和功能。...学习过 Vue.js 之后,你会知道通过 Vue Loader 我们可以在前端通过单文件组件的格式编写 Vue 组件,然后注册、引用,在 Laravel 中我们也是这么干的,这可以极大提高前端代码的复用性...、可读性和可维护性,下面我们以 Laravel 默认的欢迎页面为例,将其改为通过 Vue 组件来实现,希望可以帮助你快速入门如何在 Laravel 中编写 Vue 组件。...好了,我们已经完成了在 Laravel 中编写第一个 Vue 组件,很简单吧,有了 Vue 组件,以后前端开发和维护会更加高效,想要在 Laravel 中结合 Vue 构建更加复杂的前后端分离应用,可以阅读学院提供的

    3.3K30

    Vuebnb:一个用vue.js和Laravel构建的全栈应用

    在这篇文章中,我会把它如何工作做一个高层次的概述,好让你了解如何从零开始参与建设一个Vue/Laravel构建的全栈应用。...概述 作为一个完整的全栈应用程序,Vuebnb由不同的部分组成: 前端应用,使用Vue.js构建。我也使用Vue-Router管理页面创建,用Vuex管理全局状态。...代码最初是写在一个浏览器的脚本文件,但随着复杂性的增加使用WebPack生成,并设置允许单个文件组件和ES+功能。 后台应用程序,内置Laravel。...可以收藏从首页或列表页点击心形图标,这是可重用的组件的一个部分。 我通过Vuex存储状态,可以保持整个页面的使用。为了在会话中持久化状态,我通过Ajax将它发送回存储在数据库中的服务器。...通过Laravel的验证接口来验证相关API调用。 在后端和前端之间共享数据 全栈应用程序的关键考虑之一是如何在后端和前端之间进行数据通信,所以我花了相当多的时间来处理这本书中的问题。

    6K10

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

    ; database.php:数据库的配置文件; filesystems.php:文件系统(如文件存储等)的配置文件; (4) \textbf{database 目录} :包含数据填充和迁移文件以及模型工厂类...创建/删除/修改数据表操作的类文件); seeds:播种、种子,存放的是种子(填充器)文件(模拟向数据表中写入数据的操作类 (5) \textbf{public 目录} :项目的入口文件和系统的静态资源目录...后期使用的外部静态文件(js、css、图片等)都需要放到 Public 目录。...(10) \textbf{vendor 目录} :主要是存放第三方的类库文件;laravel 思想主要是共同的开发,不要重复的造轮子(例如,里面可能存在验证码类,上传类,邮件类),该目录还存放 laravel...注意如果要使用 composer 软件管理的,composer 下载的类库都是存放在该目录下面的。

    3.3K10

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

    组件,Tailwind 分页视图, 时间测试助手,artisan serve 的改进,事件监听器的改进,以及各种其他错误修复和可用性改进,对 Laravel 7.x 继续进行了改善。...Jetstream 为你的下一个项目提供了完美的起点,包括登录、注册、电子邮件验证、双因子认证、会话管理、通过 Laravel Sanctum 提供的 API 支持以及可选的团队管理。...Jetstream 是使用 Tailwind CSS 设计的,你可以选择 Livewire 或 Inertia 脚手架。...Eloquent 模型工厂 已完全重写为基于类的工厂,并有完美的关联支持。例如 Laravel 中的 UserFactory 是这样写的: 的 User 模型 有个 suspended 属性,现在你想修改它的一个默认的属性值,你可以使用基类工厂类的 state 方法来完成。方法名字可以随意设置,毕竟这是个很典型的 PHP 方法。

    2.5K60

    为什么 Laravel 这么优秀?

    我准备从一个后端最常用的 CURD 例子说起,一步一步阐述这过程中 Laravel 都是怎么完成的;以及~大家~(我)为什么喜欢用 Laravel。...中可以高效的使用 Eloquent ORM 实现各种查询;如上面的例子中我们使用了 withCount 来查询课程的学生数量、用 with 加载课程对应的教师;还可以指定生成的 SQL 查询只包含某几个字段如...我们还使用了 Laravel Resource 来格式化最终的输出格式,这样做的原因是很多情况下我们不希望直接将数据库的字段暴露出去,你甚至还能在 Laravel Resource 中按不同的角色显示不同的字段...如 Java 的 Spring 会在编译时为 Sprint Container 填充不同的对象,在使用时就能向容器获取不同的值。...Livewire 和 Inertiajs 都是一种类前端框架,它们提供了一种更加高效的方式来管理前端页面,并且能更好的和 Laravel 整合在一起。但是它却带来了更高的学习成本和更多人力资源的浪费。

    26710
    领券