带登录和搜索机器人的单页应用程序

时间:2011-04-11 13:19:08

标签: javascript jquery ajax backbone.js singlepage

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

我有这个静态index.html文件,我隐藏了我的登录容器和应用程序容器。然后我显示登录容器,如果我的应用程序无法识别用户,并且他们是否有auth我显示该应用程序。

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

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

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

2 个答案:

答案 0 :(得分:0)

不确定我是否完全得到了问题,但如果您想检查用户是否经过身份验证,请尝试执行ajax调用。如果它失败了" 401未经授权"用户需要登录...

答案 1 :(得分:0)

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

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