Я пишу приложение nodejs, которое я хотел бы использовать как как веб-приложение, так и поставщик API. После аутентификации пользователя я хочу назначить этому пользователю токен, который будет использоваться для последующих запросов. Это отлично работает с паспортом для веб-приложения, так как я просто сериализую и десериализую пользователя с токеном в сеансе. Однако при ответе на запросы API нет файлов cookie для установки информации о сеансе. В идеале паспорт будет искать токен как в сеансе, так и в теле запроса. Есть ли способ настроить паспорт для этого?
Токен
Ответ 1
Просто используйте токен доступа для каждого запроса. Использование сеанса НЕ необходимо. Ниже приведен рабочий процесс:
POST /signin
- Имя пользователя и пароль отправляются в запросе клиента.
- Сервер аутентифицирует пользователя, используя локальную стратегию паспорта. См. passport-local.
- Если учетные данные представляют действительного пользователя, сервер возвращает токен доступа, сгенерированный каким-то генератором. node-jwt-simple - хороший выбор.
- Если учетные данные недействительны, перенаправляйтесь на
/signin
.
Когда клиент получает токен доступа с сервера авторизации, он может затем делать запросы на защищенные ресурсы на сервере. Например:
GET /api/v1/somefunction?token='abcedf'
- Клиент вызывает некоторый сервер api с аргументом токена.
- Сервер аутентифицирует токен, используя Стратегию переноса паспортов. См. passport-http-bearer.
Ссылки
Создайте безопасный API oauth с паспортом. js и express.js(node.js)
Ответ 2
Поскольку bnuhero упоминает, что вам не нужны сеансы (хотя этот подход имеет и свои достоинства). Здесь проект котловой плиты, который я начинаю для этого: https://github.com/roblevintennis/passport-api-tokens
Здесь альтернатива и легко следовать tut (но она использует сеансы). Может быть, хорошая перекрестная ссылка: http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local
И еще одна ссылка: http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/