UserManager.SendEmailAsync,我能安全地忽略它吗?

时间:2018-04-24 16:54:52

标签: asp.net-mvc-5 asp.net-identity

我发现Asp.Net Identity 2.0的UserManager.SendEmailAsync对于我想要做的事情来说太粗糙了。 (编辑:MVC5)我想用一些HTML设置一个邮件模板。我不希望SendEmailAsync的调用者担心这一点。

所以,我正准备宣布我根本不会使用这种方法。我决定创建一个单独的程序集和服务来处理所有事情,并且只展示一种方法,例如someService.ScheduleMessage(1 /* userId */, MessageKindEnum.FORGOT_PASSWORD, new SomeRelevantData(verificationCode), Scheduling.IMMEDIATELY)

现在,在我匆忙做这件事之前,有没有理由忽视UserManager.SendEmailAsync会是一件坏事?对我来说,这似乎是一种实用方法,仅此而已。我甚至都不明白为什么它在UserManager中。我错过了什么或者这样做很好吗?

1 个答案:

答案 0 :(得分:0)

我认为你在谈论的是MVC5的Identity V2,而不是Asp.Net Core。

如果您查看此方法的source code,您会发现这是围绕IIdentityMessageService实施的薄包装。所以你称这是一种实用方法是完全正确的,我完全赞同它并不属于那种情绪。

但是,此方法由EmailTokenProvider在内部调用,在发出2-FactorAuthentication时由UserManager调用。因此只有在使用2FA时才需要它。如果您没有使用2FA,那么您可以使用自己的实现。

另一个选择是提供您自己的IIdentityMessageService实现,您可以在其中执行(尽管受传入参数的限制)。然后在UserManager

的构造函数中提供您自己的实现