1

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

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

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


问题..如果用户登录,我有一个非常简单的 WordPress 方式(单行)来检查。PHP

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

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


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

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

4

1 回答 1

1

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

登录/注销通过对相关端点的简单调用发生。我使用单独的端点返回用户数据,404如果用户未登录,这将导致。这只是我的做事方式,如果登录成功,您也可以从登录端点返回该数据。

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

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

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

让我知道,以防我误解了您要做什么,或者您仍然需要澄清。

于 2016-04-20T16:44:07.620 回答