如何在 ASP.NET Core 中处理用于登录 SMTP 客户端的密码存储?

How do i handle password storage for sign-in to the SMTP client in ASP.NET Core?

我目前正在开发 ASP.NET 核心应用程序,其中一部分是 'EmailService' 现在,它的唯一功能是通过它发送信息性电子邮件。 SMTP,但是使用客户端自己的凭据。而且我很不确定我应该如何处理这些凭据的存储,以启用 SMTP,它需要:

我想除了密码之外的所有内容都可以安全地存储在数据库中,但是我该如何存储密码呢?

(数据库未存储在同一台机器上,如果这有任何区别的话)

如前所述,有几种处理方法。

我选择的解决方案是通过在服务集合上执行 .AddDataProtection() 使用来自 Microsoft.AspNetCore.DataProtection 的 .NET Core 内置内容,以便可以通过 DI 访问它。

这是在控制器中完成的:

private IDataProtector myProtector;

public Mycontroller(IDataProtectionProvider provider)
{
    this.myProtector = provider.CreateProtector("myPurpose");

    var encryptedString = this.myProtector.Protect("somestring");

    var decryptedstring = this.myProtector.Unprotect(encryptedString);

}

它支持许多不同的密钥配置,我建议将其与 .NET Core 一起使用。