Identity示例项目中的DataProtectionProvider

时间:2014-09-05 11:50:03

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

官方身份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文档很糟糕或不存在。

这是做什么的?

1 个答案:

答案 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