У меня есть несколько функций BL, которые проверяют, кто вызывает метод, читая данные из свойства httpContext.User. Он отлично работает, когда пользователь действительно входит в систему.
Я хотел бы разрешить пользователям планировать действие, которое будет запущено позднее. Как только пользователь просит отправить электронное письмо позже, я пишу запрос в БД, и разработанная мной служба автоматизации выполнит его в нужное время, сделав http-вызов наподобие: https://mysystem.lan/SendEmail/?Requestid=122d8f273465.
поскольку процесс автоматизации не происходит на стороне клиента, пользователь не вошел в систему, поэтому действие SendEmail не будет запущено, поскольку свойство httpContext.User будет иметь значение null.
Благодаря параметру Requestid в URL-адресе я могу разрешить UserId, который создал запрос, и я хочу, чтобы над удостоверением ASP.NET было удостоверение этого пользователя и чтобы метод расширения GetUserId () тоже работал ( поскольку насмешки не влияют на подобные методы).
Все ответы, которые я видел здесь, объясняют, как смоделировать идентичность путем создания экземпляра контроллера для модульного тестирования, но эта ситуация отличается, потому что мне нужно смоделировать идентичность внутри действия контроллера, когда сервер получает запрос https://mysystem.lan/SendEmail/?Requestid=122d8f273465.
Можете ли вы предложить, как это сделать?