Одностраничное приложение с логином и поисковыми роботами - PullRequest
2 голосов
/ 11 апреля 2011

В моей работе с одностраничным приложением Javascript я недавно столкнулся с проблемой. Вся идея этого проекта - избежать перезагрузки страницы. Когда пользователь приходит в мое приложение, ему не нужно делать никаких перезагрузок. Это делается с помощью jQuery, Backbone.js и PHP как службы.

У меня есть этот статический файл index.html, в котором я скрываю свой контейнер входа и контейнер приложения. Затем я показываю контейнер входа в систему, если пользователь не распознается моим приложением, и если у него есть авторизация, я показываю приложение.

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

Я не хочу показывать пользователям, не прошедшим аутентификацию, форму входа и общую информацию. Очень важно также то, что сайт может быть найден роботами как Google и т. Д.

Можно ли это сделать только с двумя разными файлами, что дает мне перезагрузку? Сайт.com и login.site.com. Это решение меня раздражает, потому что мой логин, как сейчас, довольно мгновенный.

Ответы [ 2 ]

0 голосов
/ 18 июня 2011

Вы можете достичь того, чего хотите, используя вызовы ajax для аутентификации (хотя это не рекомендуемый подход, и люди обычно предпочитают двухстраничное решение, которое вы обрисовали в общих чертах).

Что вы можете сделать, так это иметь очень узкие контроллеры, которые просто существуют для предоставления данных в пользовательский интерфейс расширенного клиента.Ваш контроллер шлюза (отдельный контроллер, модель которого не выступает в качестве точки входа в приложение) просто отобразит клиенту базовую структуру приложения (без каких-либо пользовательских данных, вы не знаете, вошел ли пользователь в систему, вы ненужно знать на данный момент).Затем клиент запросит у UserController идентификатор текущего пользователя, вошедшего в систему. Если пользователь вошел в систему, сервер вернет ответ json, содержащий информацию, относящуюся к пользователю, и если нет, сервер вернет ответ о том, что пользователь не вошел.частичное для формы входа в систему, а затем отправить его снова через ajax.Как видите, одноразовое создание пользовательского интерфейса и общение с сервером с помощью облегченных вызовов ajax может легко решить вашу проблему.

0 голосов
/ 11 апреля 2011

Не уверен, что я получу вопрос полностью, но если вы хотите проверить, прошел ли пользователь аутентификацию, попробуйте выполнить ajax-вызов. Если произойдет сбой с «401 не авторизован», пользователь должен будет войти в систему ...

...