Как использовать существующий токен сервера с простой аутентификацией emberjs

В настоящее время я использую эту библиотеку ember-simple-auth для управления аутентификацией в приложении emberjs. (корзина), которую я сейчас создаю.

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

Итак, вот сценарий: приложение должно взаимодействовать с внутренним сервером, чтобы получить токен сеанса для каждого пользователя. Это необходимо для того, чтобы пользователь мог временно сохранять свои элементы на стороне сервера, используя данные сеанса. То, что вы ожидаете от корзины покупок.

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

Однако я пока не могу понять, как это сделать с помощью simple-auth. Если я создам настраиваемый аутентификатор, который просто получает идентификатор токена с сервера, он будет отмечать сеанс как прошедший проверку подлинности и не будет запрашивать вход в систему с помощью AuthenticatedRoute.

В общем, я пытаюсь сделать следующее:

  1. Клиент посещает сайт
  2. Приложение получает токен сеанса с сервера
  3. Клиент щелкает и сохраняет товар в корзину. Данные синхронизируются с сервером с использованием токена сеанса
  4. Клиент готов к оформлению заказа и переходит на страницу оформления заказа
  5. Приложение перехватывает маршрут и перенаправляет клиента на маршрут входа, где клиент может войти и возобновить оформление заказа.

Я надеюсь, что приведенная выше информация достаточно ясна. Будем очень признательны за любые подсказки и помощь. Спасибо.


person Arvy Budiarto    schedule 30.06.2014    source источник


Ответы (1)


Я бы, вероятно, использовал Ember Simple Auth только с того места, где пользователь фактически входит в систему. До этого вместо использования токена сеанса для идентификации корзины я бы, вероятно, явно создал корзину на стороне сервера (POST /basket), а затем добавил к этому через интерфейс REST (PUT /baskets/:id/items или около того). Таким образом, вы не разделяете состояние между клиентом и сервером и получаете понятный интерфейс. Вам также не нужно «злоупотреблять» Ember Simple Auth, что, вероятно, позже приведет только к другим проблемам. Когда пользователь входит в систему, вы просто назначаете ранее созданную корзину этому пользователю и продолжаете.

person marcoow    schedule 30.06.2014