Перья: пользовательская аутентификация, сервис и уровень соединения
Я хотел бы использовать простую, но настраиваемую процедуру аутентификации с перьями, но не понимаю, как ее реализовать.
Требование: каждое клиентское соединение (websocket или REST) должно предоставлять маркер сеанса (который я устанавливаю другими способами и который сохраняется в виде файла cookie). Промежуточное программное обеспечение сервера проверяет этот токен сеанса (для службы), добавляет объект пользователя в случае успеха или в противном случае разрывает соединение.
Я прав, что это невозможно осуществить feathers-authenticate
? Официальная документация по аутентификации сосредоточена вокруг JWT и не содержит упоминаний о каком-либо методе, не основанном на паспорте.
Это может быть возможно с помощью хуков приложений, например, хука до уровня приложения. Но это все же позволило бы пользователям устанавливать, например, соединение через веб-сокет, потому что аутентификация только на уровне обслуживания, верно? Я не думаю, что это идеально. Я хочу, чтобы моя проверка подлинности запускалась при установлении соединения (веб-сокет или также HTTP для REST) и сбрасывалась прямо в случае неудачи.
Могу ли я сделать это с перьями?
1 ответ
Я решил это, добавив аутентификацию в соединение primus:
feathersApp.configure(
primus(
{
transformer: "websockets"
},
function(primus) {
primus.use("cookies", cookieParser, 1);
primus.authorize(async (req, done) => {
try {
done(await authenticateRequest(req));
} catch (err) {
done(err);
}
});
}
)
);