2

在我使用 Javascript 单页应用程序的工作中,我最近遇到了一个问题。这个项目背后的整个想法是避免页面重新加载。当用户来到我的应用程序时,他们不需要重新加载。这是通过 jQuery 和 Backbone.js 以及 PHP 作为服务来完成的。

我有这个静态 index.html 文件,我在其中隐藏了我的登录容器和应用程序容器。然后我显示登录容器,如果我的应用程序无法识别用户,并且如果他们有身份验证,我会显示应用程序。

if auth:
  application.show()
elif not auth:
  login.show() // like Gmail or Facebook etc.: Information + login-form

我不想显示未经身份验证的用户,包括登录表单和一般信息。非常重要的是,该网站可以被机器人如谷歌等找到。

这只能用 2 个不同的文件来完成,让我重新加载吗?一个 site.com 和 login.site.com。这个解决方案让我很恼火,因为我现在的登录是非常即时的。

4

2 回答 2

0

您可以通过使用 ajax 调用进行身份验证来实现您想要的(尽管这不是推荐的方法,人们通常更喜欢您概述的两页解决方案)。

您可以做的是拥有非常瘦的控制器,这些控制器只是为了向富客户端 UI 提供数据而存在。您的网关控制器(一个单独的控制器,没有充当应用程序入口点的模型)只会将基本应用程序结构呈现给客户端(没有任何用户特定数据,您不知道用户是否登录,您不知道此时需要知道)。然后客户端将向 UserController 查询当前登录用户的身份,如果用户已登录,服务器返回一个包含与用户相关信息的 json 响应,如果没有,服务器返回一个响应说用户未登录。然后你可以获取登录表单的一部分,然后通过 ajax 再次提交。如您所见,创建一次 UI 并使用轻量级 ajax 调用与服务器通信可以轻松解决您的问题。

于 2011-06-18T08:17:15.007 回答
0

不确定我是否完全理解了这个问题,但如果您想检查用户是否已通过身份验证,请尝试进行 ajax 调用。如果失败并显示“401 未授权”,则用户需要登录...

于 2011-04-11T15:56:42.520 回答