UserManager.SendEmailAsync, могу ли я безопасно проигнорировать это? - PullRequest
0 голосов
/ 24 апреля 2018

Я считаю, что UserManager.SendEmailAsync в Asp.Net Identity 2.0 слишком груб для того, что я хочу сделать. (Edit: MVC5) Я хотел бы установить шаблон почты с некоторым HTML. Я не хочу, чтобы вызывающий SendEmailAsync беспокоился об этом.

Итак, я собираюсь объявить, что вообще не буду использовать этот метод. Я решил создать отдельную сборку и сервис, который позаботится обо всем, и разоблачит только один метод, что-то вроде someService.ScheduleMessage(1 /* userId */, MessageKindEnum.FORGOT_PASSWORD, new SomeRelevantData(verificationCode), Scheduling.IMMEDIATELY).

Теперь, прежде чем я поспешу сделать это, есть ли причина, почему было бы плохо игнорировать UserManager.SendEmailAsync? Мне кажется, что это полезный метод, не более того. Я даже не понимаю, почему он вообще находится в UserManager. Я что-то упустил или это нормально?

1 Ответ

0 голосов
/ 25 апреля 2018

Я предполагаю, что вы говорите об Identity V2 для MVC5, а не Asp.Net Core.

Если вы посмотрите исходный код этого метода, вы увидите, что этотонкая обертка вокруг реализации IIdentityMessageService.Так что вы совершенно правильно назвали этот служебный метод, и я совершенно согласен с мнением, что он на самом деле не принадлежит ему.

Однако этот метод вызывается внутренне EmailTokenProvider , который, в свою очередь,вызывается UserManager при выдаче 2-FactorAuthentication.Так что это нужно только тогда, когда вы используете 2FA.Если вы не используете 2FA, то все будет в порядке с вашей собственной реализацией.

Другой вариант - предоставить собственную реализацию IIdentityMessageService , где вы можете делать (хотя и ограничены входящими параметрами) почти все, что хотите.А затем предоставьте свою собственную реализацию в конструкторе UserManager.

...