首页
学习
活动
专区
工具
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.4K20

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, 如果您程序配置了

3K30
  • 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

    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

    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

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

    声甜人美的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

    45310

    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.

    43810

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

    域名产品后端研发 岗位职责: 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.

    54010

    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

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

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

    22410

    创建并运行一个新 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.8K30

    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.jsLaravel构建全栈应用

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

    6K10

    竟然有人质疑我还在用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 这么优秀?

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

    22410

    【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
    领券