官方身份2示例项目的代码如下UserManager.Create()
public static UserManager Create(IdentityFactoryOptions<UserManager> options, IOwinContext context) {
//...etc...
// --- what does this block do? ---
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null) {
manager.UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"));
}
// --------------------------------
//...etc...
}
alpha / beta / RTM Identity文档很糟糕或不存在。
这是做什么的?
答案 0 :(得分:19)
以下行中的保护提供程序用作令牌提供程序/生成器。
manager.UserTokenProvider = new DataProtectorTokenProvider<User>(dataProtectionProvider.Create("ASP.NET Identity"));
它负责生成电子邮件确认令牌或密码重置令牌。如果您未设置此行,则无法使用此功能(将抛出相应的异常)。可以找到一个示例here。
其主要目的是提供IDataProtector接口的实现(通过 Create 方法),用于加密和解密数据。框架中此接口的实现是 DpapiDataProtectionProvider ,当应用程序未由ASP.NET托管时,应使用该实现。 Web上还有其他几种实现(例如,出于安全目的使用机器密钥的实现)。 class有关DataProtectorTokenProvider的更多信息,请查看MSDN documentation。
<强>更新强>
现在可以使用广泛的Data Protection documentation。