Получение пользователя из промежуточного программного обеспечения в Aqueduct

Как предоставить информацию от промежуточного программного обеспечения авторизации, например, вошедшего в систему пользователя, последующим контроллерам запросов с помощью Aqueduct?

Например, мой маршрут:

.route('/events/[:id]')
.link(() => SecretKeyAuthorizer(context))
.link(() => EventsController(context));

А SecretKeyAuthorizer использует заголовок для поиска текущего пользователя. И я хотел бы использовать информацию от пользователя в EventsController.


person MappaM    schedule 21.02.2021    source источник


Ответы (1)


После долгих поисков я наконец нашел ответ. Для этой цели в объекте запроса можно использовать вложения, которые являются словарем, которые хранятся в течение всего срока его существования. Обычно авторизатор делает что-то вроде:

  request.attachments["user"] = user;

И последующие RessourceControllers могут использовать его с:

  User user = request.attachments["user"] as User;

Обратите внимание, что request является членом класса Controller, поэтому он доступен напрямую через наследование.

person MappaM    schedule 23.02.2021