Внедрить HttpContext в промежуточное ПО InversifyJS

Один из способов сделать это - создать рабочий класс, который вызывает событие, когда оно будет завершено.

выполнить рабочий класс в новом аде, чтобы он запускал его backgroud.

создать модальную форму с помощью метода, чтобы закрыть ее как обработчик события для «завершенного» события. Таким образом, ui все еще работает и отвечает, и форма закрывается после завершения рабочего потока.

1
задан Christophe Geers 16 January 2019 в 20:06
поделиться

1 ответ

Это не поддерживается, но я понимаю, зачем это нужно. Мы не можем передать httpContext промежуточному программному обеспечению в качестве аргумента, потому что мы хотим обеспечить совместимость стандартного промежуточного программного обеспечения Express. Это означает, что единственный вариант - сделать что-то наподобие того, что вы сделали, но в идеале мы должны инкапсулировать это с помощью некоторого помощника.

Нам нужно реализовать что-то вроде следующей функции getHttpContext:

import * as express from "express";
import { getHttpContext } from "inversify-express-utils";

function authMiddlewareFactory() {
  return (config: { role: string }) => {
     return (
         req: express.Request,
         res: express.Response,
         next: express.NextFunction
     ): void => {
         const httpContext = getHttpContext(req);
         const principal: interfaces.Principal = httpContext.user;
         if (!principal.isInRole(config.role)) {
             res.sendStatus(HttpStatus.UNAUTHORIZED);
             return;
         }
         next();
     };
   };
 }

Пока это не реализовано, я не вижу никаких проблем с вашей реализацией, кроме утечки информации внутренних компонентов. 114]

0
ответ дан Remo H. Jansen 16 January 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: