2014-09-19 95 views
1

我试图实现双因素身份验证。在双因素身份验证中,我想生成6位数令牌,并将此6位令牌发送给用户邮件ID。双因素身份验证不包含定义GetEmailConfirmationTokenAsync

问题是,当我在AccountController中实现Register方法时,我在这个方法中得到错误GetEmailConfirmationTokenAsync

我安装所有必要的包一样,

  • Microsoft.AspNet.Identity.Owin;

  • Microsoft.AspNet.Identity;

  • Microsoft.AspNet.Identity.EntityFramework;

  • Microsoft.Owin.Security;

  • Microsoft.AspNet.Identity.Sample;

  • Microsoft.AspNet.Identity.Core

错误:双因素身份验证不包含GetEmailConfirmationTokenAsync定义。

我指的是这两个连接:

http://blogs.msdn.com/b/webdev/archive/2014/02/18/adding-two-factor-authentication-to-an-application-using-asp-net-identity.aspx

http://blogs.msdn.com/b/webdev/archive/2014/02/12/per-request-lifetime-management-for-usermanager-class-in-asp-net-identity.aspx

代码:

public async Task<ActionResult> Register(RegisterViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      //var user = new ApplicationUser() { UserName = model.UserName }; 

      var user = new ApplicationUser() { UserName = model.UserName, Email = model.Email }; 

      var result = await UserManager.CreateAsync(user, model.Password); 
      //if (result.Succeeded) 
      //{ 
       // await SignInAsync(user, isPersistent: false); 
       // return RedirectToAction("Index", "Home"); 
      //} 


      if (result.Succeeded) 
      { 
       string code = await UserManager.GetEmailConfirmationTokenAsync(user.Id); 
       var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); 
       await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>"); 
       return View("ShowEmail"); 
      } 
      else 
      { 
       AddErrors(result); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 
+0

希望您使用的是最新的asp.net标识2.0。检查GenerateEmailConfirmationToken http://msdn.microsoft.com/en-us/library/dn497485%28v=vs.108%29.aspx – 2014-09-19 08:51:19

+0

我们可以在哪里检查asp.net身份? – 2014-09-19 08:53:06

+0

我正在谈论Microsoft.AspNet.Identity – 2014-09-19 08:54:23

回答

1

创建空的Web应用程序和使用的软件包管理器控制台安装以下asp.net身份来自NuGet的框架样本并玩弄了解asp.net身份。此示例包括端到端的示例应用程序,其中包括正常的电子邮件注册和双因素身份验证,您在问题中正确询问您的问题。

安装,包装Microsoft.AspNet.Identity.Samples

希望这有助于。

相关问题