2016-09-26 2 views
0

Ich versuche, Reset-Passwort-Funktionalität in meiner Web-API zu entwickeln. Die E-Mail-Generierung wird im Rest-Web-Service (Web-API) durchgeführt. Sobald der Benutzer die generierte E-Mail mit Link erhält, wenn er auf den Link klickt, sollte der Benutzer zu ResetPasswordPage weitergeleitet werden, das sich auf der MVC-Website befindet (die Webseite befindet sich nicht in der Web-API, sondern auf der von meinem Kollegen entwickelten Website) anderer Hafen. Wenn ich auf die ResetPassword Seite klicke, öffnet sich die Reset Password Webseite .. und ich klicke auf Submit button, ich bekomme eine 'Invalid Token' Nachricht.Reset Password Funktionalität erzeugt ein ungültiges Token

Die Web API (REST Web-Service) Code ist wie unten

string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); 
      code = HttpUtility.UrlEncode(code); 
      string forgotPasswordHost = System.Configuration.ConfigurationManager.AppSettings["ForgotPasswordURL"]; 
      string forgotPasswordURL = Url.Route("URLApi", new {controller = "ResetPassword", userId = user.Id, code = code }); 
      try 
      { 
       //await UserManager.SendEmailAsync(user.Id, "Reset Password", $"{url}"); 
       await UserManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + forgotPasswordHost + forgotPasswordURL + "\">here</a>"); 
      } 
      catch (Exception e) 
      { 
       return new Status 
       { 
        status = "Invalid Input" 
       }; 
      } 

auf die URL klicken sie in Webseite auf den Code unten geht

[AllowAnonymous] 
     public ActionResult ResetPassword(string code) 
     { 
      return code == null ? View("Error") : View(); 
     } 

I Ungültige Token aus der unten erhalten Methode (Dies ist der WebSite-Code)

[HttpPost] 
     [AllowAnonymous] 
     [ValidateAntiForgeryToken] 
     public async Task<ActionResult> ResetPassword(ResetPasswordViewModel model) 
     { 
      if (!ModelState.IsValid) 
      { 
       return View(model); 
      } 
      var user = await UserManager.FindByNameAsync(model.Email); 
      if (user == null) 
      { 
       // Don't reveal that the user does not exist 
       return RedirectToAction("ResetPasswordConfirmation", "Account"); 
      } 
      var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password); 
      if (result.Succeeded) 
      { 
       return RedirectToAction("ResetPasswordConfirmation", "Account"); 
      } 
      AddErrors(result); 
      return View(); 
     } 

Und beim Klicken auf den E-Mail-Link öffnet sich die Webseite up. Aber ich habe festgestellt, dass der Wert von '_RequestVerificationToken' unterschiedlich ist, wenn die Webseite geöffnet wird und nachdem die Seite übergeben wurde. Jede Hilfe wird geschätzt

+0

Die Passwort zurücksetzen Webseite – cell

Antwort

Verwandte Themen