JS单页应用程序和基于PHP的登录系统


JS single-page application and PHP based logging in system?

我目前正在开发单页应用程序,我使用 React 和 Relay 来实现这一点。

如果用户未登录,我有几个组件非常不同甚至不存在(例如,登录用户下拉菜单,个人资料页面,访问会员内容)。

需要注意的重要一点是,我使用WordPress作为CMS。登录目前通过正常HTTP和正常页面刷新完成。WordPress为登录用户设置了几个会话。


问题..我有一种非常简单的WordPress方式(单行)来签入PHP如果用户已登录。

  • 我不知道为什么,但AJAX(即使有 20 字节的数据)通常都有很长的加载时间(几秒钟)。我需要检查用户是否经常登录,这是不可接受的。我的连接和服务器很好,"正常"页面加载所需的时间几乎相同。这意味着发送AJAX请求,检查用户是否通过PHP登录到服务器不是一个选项。

  • 我无法捕获会话密钥或值,因为它们都是随机生成的,不会以任何方式存储在数据库中,这可能是一个巨大的安全问题。这意味着我无法检查我的"秘密"变量值是否等于会话密钥或值JS


我可以和(如果是)我如何匹配这两种技术吗?我看不到在系统中删除WordPress登录的方法,因为整个CMS都取决于此,改变它会非常痛苦。还是应该在前端使用单独的JS登录机制?用户无法访问WordPress后端,只有管理员可以访问。

即使您没有一个很好的可靠答案,也非常欢迎所有建议在评论中!

实际上没有必要

检查用户是否登录了单页应用程序的每个部分。让我解释一下我是如何做到的:

登录/注销是通过对相对端点的简单调用进行的。我使用单独的端点返回用户数据,如果用户未登录,则会导致404。这只是我的工作方式,如果登录成功,您也可以从登录端点返回该数据。

现在,即使它是一个单页应用程序,并且我们使用 ajax 进行应用程序和服务器之间的通信,服务器会话仍然存在。这意味着,对于非 ajax 和 ajax 调用,用于检查用户是否已登录的逻辑保持不变。基于此,您可以保护后端仅返回用户可访问的数据。

返回到单页应用程序。您只需登录一次,即可在应用程序中存储必要的信息,例如用户级别等。现在确实如此,这些数据很容易被泄露。但是你不应该太担心这一点,因为它只影响当前用户,后端实际上不会允许他做任何他不允许做的事情。

例如,某人将其用户级别从"正常"更改为"管理员"。现在,他可以查看应用程序的某些部分,这是他无法正常查看的。但是,他不会看到任何内容,因为后端无论如何都会拒绝向他发送该数据。他可能会看到一些以前无法使用的选项,但同样,即使他可能会发送这些请求,后端也不会处理它们。

如果我误解了您要做什么,或者您仍然需要一些澄清,请告诉我。