Перья: пользовательская аутентификация, сервис и уровень соединения

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

Требование: каждое клиентское соединение (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);
          }
        });
      }
    )
  );
Другие вопросы по тегам