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

Javascript 带有登录和搜索机器人的单页应用程序,javascript,jquery,ajax,backbone.js,singlepage,Javascript,Jquery,Ajax,Backbone.js,Singlepage,在使用Javascript单页应用程序的过程中,我最近遇到了一个问题。 这个项目背后的全部想法是避免重新加载页面。当用户访问我的应用程序时,他们不需要进行任何重新加载。这是通过jQuery、Backbone.js和PHP作为服务完成的 我有一个静态index.html文件,其中隐藏了我的登录容器和应用程序容器。然后,我显示登录容器,如果我的应用程序无法识别用户,并且如果他们具有身份验证,则显示应用程序 if auth: application.show() elif not auth:

在使用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个不同的文件来完成,让我重新加载吗?A site.com和login.site.com。这个解决方案让我很恼火,因为我现在的登录非常即时。

我不确定我是否完全理解这个问题,但是如果你想检查用户是否通过了身份验证,请尝试进行ajax调用。如果“401 unauthorized”(401 unauthorized)失败,用户需要登录…

不确定我是否完全理解问题,但如果您想检查用户是否已通过身份验证,请尝试执行ajax调用。如果“401 unauthorized”(401 unauthorized)失败,用户需要登录…

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

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

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

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

@Julien那不是我的问题。所有这些现在都运转良好。我的问题是,我需要这个登陆页面,在这里可以显示登录表单和信息。就像Gmail做的那样,一般信息加上登录框。我的问题是:是否可以在我有身份验证的地方制作javascript单页应用程序。同时,让Google Searchbot搜索我的公共站点,也就是人们尚未登录的站点。Gmail可以做到这一点,但在你通过身份验证后,他们会重定向。我的问题是,在不重新加载的情况下进行身份验证,并且仍然保持谷歌可以抓取的登录页面。不知道这是否更准确?啊。对于机器人程序,您需要将公共页面直接放在HTML中(无论如何,这是处理主干视图的首选方法)。然后,您的controller on auth将用用户特定的HTML替换DOM。谢谢Julien,但是当用户刷新(手动)并登录时,这不会在loginform和用户特定的HTML之间出现一些闪烁吗?然后加载html(loginform),然后我将其删除,并用用户特定的html替换它-这很可能会让人眨眼-是的。这就是为什么谷歌、苹果和大多数做单页应用的人在加载实际应用之前都要先登录。有一个页面刷新,但在应用程序和网页之间是完全一致的。@Julien这不是我的问题。所有这些现在都运转良好。我的问题是,我需要这个登陆页面,在这里可以显示登录表单和信息。就像Gmail做的那样,一般信息加上登录框。我的问题是:是否可以在我有身份验证的地方制作javascript单页应用程序。同时,让Google Searchbot搜索我的公共站点,也就是人们尚未登录的站点。Gmail可以做到这一点,但在你通过身份验证后,他们会重定向。我的问题是,在不重新加载的情况下进行身份验证,并且仍然保持谷歌可以抓取的登录页面。不知道这是否更准确?啊。对于机器人程序,您需要将公共页面直接放在HTML中(无论如何,这是处理主干视图的首选方法)。然后,您的controller on auth将用用户特定的HTML替换DOM。谢谢Julien,但是当用户刷新(手动)并登录时,这不会在loginform和用户特定的HTML之间出现一些闪烁吗?然后加载html(loginform),然后我将其删除,并用用户特定的html替换它-这很可能会让人眨眼-是的。这就是为什么谷歌、苹果和大多数做单页应用的人在加载实际应用之前都要先登录。有一个页面刷新,但它是干净的赌注