php - 如果用户尚未登录,我如何拒绝他们访问我的 Backbone 应用程序的某些部分?

标签 php authentication backbone.js access-control

所以我有一个 Backbone 应用程序 + 网页主页。现在,如果您登录到我的网站,我会使用数据库中的用户详细信息创建一个全局对象。但是,您仍然可以直接点击应用程序中的其中一条路线。

我应该如何处理未“登录”的用户并将他们重定向到“您必须登录页面”?

这是标准操作吗?基本上,我有一个只返回

的 REST url 设置

{ sessionId: [php-session-id-here] }

如果他们已经登录,它会返回类似这样的内容:

{
  sessionId: [php-sess-id],
  userId: [user-id-from-db],
  firstName: [f-name],
  lastName: [l-name]
}

想法?谢谢!

最佳答案

我过去所做的是在每个页面上连同 jQuery(实际上,添加到 jQuery 文件中)一起包含 AJAX 方法的扩展,以检查我在用户不在时发送的自定义代码已登录。当看到该值时,无论发生什么情况,它都会将用户重定向到登录页面。

这是因为该站点在登录时超时,因此用户可能会在页面上退出,然后 AJAX 请求就会失败。如果您的登录没有超时,那么遇到此问题的可能性很小。忽略来自未登录用户的请求。

如果您需要编码方面的帮助,请从这里开始:Extending Ajax: Prefilters, Converters, and Transports .


真的不应该需要任何像伪代码一样复杂的东西:

  1. JS 需要做一些 AJAX,所以 JS 与服务器对话
  2. 如果需要,PHP 检查登录
  3. 如果未登录,则发回中止消息(我使用了一个转换器来捕获“notLoggedIn”数据类型。然而,这也可以通过传输来完成,它们只是更复杂。)
  4. JS 看到中止消息并执行 window.location 重定向而不是返回 AJAX 消息。

如果您愿意,您可以加载一个带有登录表单的灯箱,并通过 AJAX 将其发送到 PHP,在那里可以重新登录,如果您记得失败的 AJAX 尝试,您可以在登录后再次发送它。然后用户甚至不需要离开页面即可重新登录。

关于php - 如果用户尚未登录,我如何拒绝他们访问我的 Backbone 应用程序的某些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981975/

相关文章:

java - Apache 希罗 : Using isAuthenticated() || isRemembered() for an app without high security requirements

javascript - 无需后端的用户认证

javascript - 如何从 Backbone 路由器中提取 id 参数

php - 如何将单元格对象转换为数组

php - Eclipse Kepler - PHP 代码完成不工作

php - XSS 攻击预防

javascript - Backbone.js - 解耦数据源?

javascript - WordPress 上的病毒 wp-tmp.php 可以做什么

python - 如何授权 django-rest-knox 登录路径而不出现 401 错误?

rest - 让 React + Backbone 应用程序在没有集合的情况下保持安静