Hola amigos espero puedan ayudarme
Estoy generando mi propio metodo para crear usuarios mediante identity solo que al gnerar token cuando lo quiero validar me sale invalid token les muestro:
Idenditity.cs
public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) { var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); manager.UserValidator = new UserValidator<ApplicationUser>(manager) { AllowOnlyAlphanumericUserNames = false, RequireUniqueEmail = true }; manager.PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = true, RequireDigit = true, RequireLowercase = true, RequireUppercase = true, }; manager.UserLockoutEnabledByDefault = true; manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); manager.MaxFailedAccessAttemptsBeforeLockout = 5; manager.RegisterTwoFactorProvider("Código telefónico", new PhoneNumberTokenProvider<ApplicationUser> { MessageFormat = "Su código de seguridad es {0}" }); manager.RegisterTwoFactorProvider("Código de correo electrónico", new EmailTokenProvider<ApplicationUser> { Subject = "Código de seguridad", BodyFormat = "Su código de seguridad es {0}" }); manager.EmailService = new EmailService(); manager.SmsService = new SmsService(); var dataProtectionProvider = options.DataProtectionProvider; if (dataProtectionProvider != null) { manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); } return manager; }
Metodo para crear usuario
public static ApplicationUser CreateUserASP(string email, string roleName, string password) { var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(userContext)); var userASP = new ApplicationUser { Email = email, UserName = email, }; var result = userManager.Create(userASP, password); if (result.Succeeded) { userManager.AddToRole(userASP.Id, roleName); } var provider = new DpapiDataProtectionProvider("ApplicationName"); userManager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(provider.Create("ASP.NET Identity")); string code = userManager.GenerateEmailConfirmationToken(userASP.Id); var callbackUrl = "https://localhost:44390/Account/ConfirmEmail?userId="+ userASP.Id +"&code="+ code; userManager.SendEmail(userASP.Id, "Confirmar cuenta", "Para confirmar la cuenta, haga clic <a href=\""+ callbackUrl +"\">aquí</a>"); return userASP; }
Metodo para confirmar email
[AllowAnonymous] public async Task<ActionResult> ConfirmEmail(string userId, string code) { if (userId == null || code == null) { return View("Error"); } var result = await UserManager.ConfirmEmailAsync(userId, code); return View(result.Succeeded ? "ConfirmEmail" : "Error"); }
Espero que puedan ayudarme.
Saludos