Как обрабатывать несколько стратегий аутентификации на sails.js SPA?
Я создаю одностраничное приложение, построенное на Angular для front-end и sailsjs для бэкэнд. Прямо сейчас я использую sails-auth (который использует passportjs внутренне), чтобы привязать мою логику аутентификации к моей модели пользователя.
У меня есть несколько поставщиков паспортов, установленных и доступных на моем интерфейсе, таких как passport-github
и passport-facebook
, но также классический passport-local
, чтобы пользователь мог также зарегистрироваться и войти только с его именем пользователя и паролем.
Я хотел бы, чтобы мои клиенты (одностраничное приложение и, возможно, другие в будущем) использовали токен после авторизации вместо файлов cookie/сеансов, чтобы упростить масштабирование и запросы междоменного доступа. Это также упростит мобильную интеграцию.
Я знаю, что мне нужно использовать обратные вызовы для поставщиков OAuth, вот поток, к которому я стремился:
Я знаю, что я могу заменить политику sail-auth sessionAuth
политикой tokenAuth
, которая может читать маркер из заголовков и запрашивать модель Tokens
, например, но тогда мои вопросы:
- При использовании имени пользователя/пароля для входа запрос может быть выполнен с помощью простого вызова AJAX, поэтому легко передать токен обратно в SPA. При использовании таких провайдеров, как github и т.д., Когда вызывается обратный вызов, следует ли я просто внедрять токен в HTML-код, который я обслуживаю?
- sail-auth
policies/passport.js
показывает, что по умолчанию он полагается на встроенные сеансы для продолжения входа/сериализации и десериализации идентификатора пользователя, Как отделить его от встроенных сессий парусов, чтобы он генерировал токен для пользователя и возвращал мой индекс с внедренным токеном?
Заранее благодарю вас!