将 PHP 会话与 Vue/Node.js 集成

     2023-02-22     159

关键词:

【中文标题】将 PHP 会话与 Vue/Node.js 集成【英文标题】:Integrate PHP sessions with Vue/Node.js 【发布时间】:2018-08-11 22:32:08 【问题描述】:

我有一个 PHP 应用程序,它对用户进行身份验证、执行 MySQL 查询并依赖于 $_SESSION cookie。

一切正常,但我意识到我需要在前端做更多事情,因此不得不使用 Vue.js 和 websockets。

因此,我将 node.js 用于主域 localhost(为了生产)

我在 localhost:8080 上提供了 PHP API,以便 Vue.js 可以与 PHP 后端通信。

现在,这是我的问题

如何在 Vue/Websocket 中使用/存储 $_SESSION ID 并将其与对 PHP 服务器的每个请求一起发送?

我对 *** 做了一些研究,发现 session_id() 可以返回当前的 Session ID,但我不知道如何将 PHP 与 Vue 集成。

注意:我正在使用 Vue.js(Vue、路由器、Vuex)和带有 Node.js 的 socket.io

【问题讨论】:

你在做某事。错误的。为什么需要 nodeJS? 我正在使用一些不能用于 ES5 的前端库。我已经解释过我需要在前端做更多的事情,我正在使用 Vue、Vue 路由器和 Vuex。这些只是 3 个核心库。我总共有超过 19 个库(不包括开发依赖项)。我无法想象在 unpkg.com 上使用它会产生大量的 http 请求,从而增加加载时间。我也打算集成websockets。 开发依赖和依赖是有区别的。只需创建一个脚本,将最终产品编译到 PHP 公共文件夹中。 问问自己为什么要使用每种技术。我相信您使用 php 作为后端,最终将为您的前端文件提供服务。如果您希望在 nodeJS 中实现您的 websocket,您可以通过简单地指定 websocket 服务器正在运行的端口来进行跨域(端口)连接。您可能需要编辑您的问题,以便更清楚地了解您通过结合两种后端技术想要实现的目标。 @itsundefined 已更新。感谢您的建议。我确实意识到这个问题之前还不够清楚。 【参考方案1】:

由于 PHP 服务器和 node.JS 服务器运行在两个不同的端口上,因此在所有浏览器中它们被视为不同的来源。这意味着从localhost:8080 发送的cookie 将不会发送到对localhost:80 的任何请求。解决此问题的一种方法是删除会话 cookie 上的 http only 标志,以便您可以通过 javascript BUT 手动发送 cookie,如果有人管理,这可能会非常糟糕在您的网站上运行 XSS 攻击。

其他方法是 1) 仅使用前端的两台服务器中的一台,然后让使用过的后端与另一个后端通信,这意味着您可以使 php 仅可用于节点应用程序或 2) 重新设计 PHP 以使用令牌。据我了解,您使用 php 作为 API,并且大多数 API 旨在使用令牌而不是会话,因为您通常从另一个域访问 API。

【讨论】:

我现在想知道 Node 是如何与客户端通信的?并访问 cookie 数据(如果有)。 嗯,我在考虑使用 JWT 来获取令牌。你能指导我吗? 网上有很多教程,但是如果你不写PHP代码就很难实现。

php[将产品与社交共享插件集成]将社交共享插件与woocommerce集成-sharedaddy(代码片段)

查看详情

php[将产品与社交共享插件集成]将社交共享插件与woocommerce集成-sharedaddy(代码片段)

查看详情

php[将产品与社交共享插件集成]将社交共享插件与woocommerce集成-分享此功能(代码片段)

查看详情

php[将产品与社交共享插件集成]将社交共享插件与woocommerce集成-分享此功能(代码片段)

查看详情

php[将产品与社交共享插件集成]将社交共享插件与woocommerce集成-分享此功能(代码片段)

查看详情

CodeIgniter 会话与 PHP 会话

】CodeIgniter会话与PHP会话【英文标题】:CodeIgnitersessionsvsPHPsessions【发布时间】:2011-01-0114:38:43【问题描述】:我对CodeIgniter比较陌生,并且正在制作我的第一个CI项目,其中包含用户帐户等。过去,我一直为此使用PHP的$_SESSION变... 查看详情

如何将 KNET 支付网关与 php 集成 [关闭]

】如何将KNET支付网关与php集成[关闭]【英文标题】:HowtointegrateKNETpaymentgatewaywithphp[closed]【发布时间】:2012-04-2423:25:10【问题描述】:如何将KNET支付网关与PHP集成?网关ID仅适用于Java和.NET。【问题讨论】:复制:***.com/questions/86... 查看详情

条带结帐会话与 Firebase ***等待错误的集成

】条带结帐会话与Firebase***等待错误的集成【英文标题】:Stripecheckoutsessionintegrationwithfirebasetop-level-awaiterror【发布时间】:2022-01-0216:54:11【问题描述】:您好,我一直在尝试使用stripefirebase扩展创建结帐会话,但遇到了这个错误... 查看详情

CardScan 与 PHP 的集成

】CardScan与PHP的集成【英文标题】:CardScanintegrationwithPHP【发布时间】:2011-06-1906:03:07【问题描述】:我必须将我的CardScan(来自http://cardscan.com/)与我的PHP集成,这样我才能从设备扫描的卡中获取任何信息。关于我应该从哪里开... 查看详情

如何将 PHP smarty 模板与 Vue.js 集成?

】如何将PHPsmarty模板与Vue.js集成?【英文标题】:HowtointegratePHPsmartytemplatewithVue.js?【发布时间】:2017-11-1100:45:52【问题描述】:我正在使用PHP中的Smarty模板引擎并希望将VUE.js集成到我的应用程序中,但似乎Smarty不理解Vue.js语法(... 查看详情

PHP 会话与 Cookies [重复]

】PHP会话与Cookies[重复]【英文标题】:PHPSessionsvs.Cookies[duplicate]【发布时间】:2012-07-0707:45:54【问题描述】:可能重复:CookieVSSessionPHP:HowdoCookiesandSessionswork?我正在努力学习PHP。我有一个项目网站,其中不断生成数字,并更改并... 查看详情

将 nodejs 与 php 应用程序集成的建议

】将nodejs与php应用程序集成的建议【英文标题】:Recommendationforintegratingnodejswithphpapplication【发布时间】:2011-02-1723:37:25【问题描述】:我有一个用PHP编写的现有应用程序(使用Kohana框架),我想做长轮询。从我读到的一些内容... 查看详情

如何以这种特定方式将 PayPal 与 PHP 系统集成?

】如何以这种特定方式将PayPal与PHP系统集成?【英文标题】:HowdoIintergratePayPalwithaPHPsysteminthisspecificway?【发布时间】:2015-10-0218:15:42【问题描述】:我有一个简单地注册用户的系统。我需要将其与PayPal集成,以便只有当用户已付... 查看详情

如何将 TinyMCE 编辑器与 php 集成

】如何将TinyMCE编辑器与php集成【英文标题】:HowtoIntegrateTinyMCEeditorwithphp【发布时间】:2014-05-0120:04:33【问题描述】:?我已经下载了编辑器并将它放在我根目录下的js文件夹中。我的代码中有以下实现。<scripttype="text/javascript"... 查看详情

Rails - 失去与集成测试和 Capybara 的会话 - CSRF 相关?

】Rails-失去与集成测试和Capybara的会话-CSRF相关?【英文标题】:Rails-LosingsessionwithIntegrationTestsandCapybara-CSRFrelated?【发布时间】:2011-09-3003:02:44【问题描述】:我正在使用Rails3.1.0.rc4,我正在使用capybara的新Steak-likeDSL和Rspec进行集... 查看详情

php:会话与数据库

】php:会话与数据库【英文标题】:php:sessionsvs.database【发布时间】:2010-11-1113:35:29【问题描述】:我有一个从数据库中检索其成员(或多或少10个成员)的类。我的问题是:每次从数据库(MySQL)中获取它们是否更有效,只在会... 查看详情

php将zendframework1.10与doctrine2集成(代码片段)

查看详情

将经典 ASP 与 ASP.NET 集成

...它们工作正常。我的问题是经典的ASP和ASP.NET页面不共享会话。IIS上的网站配置为InProc并使用cookie,所以我的目 查看详情