2016-05-10 15 views
0

Also versuche ich Benutzerpasswort mit Standard-ASP.NET-Methode zu ändern, aber nur nicht funktionieren, irgendwie bin ich nicht in der Lage, die aktuellen Benutzerdaten zu erhalten. Ich habe verschiedene Ansätze versucht, um userId und immer noch nichts zu bekommen. Und ich habe nichts geändert, außer [AllowAnonymous], weil ein Fehler aufgetreten ist, der besagt, dass die Berechtigung verweigert wurde, als ich versuchte, die Methode aufzurufen.ASP.NET ChangePassword userId = Null

enter image description here

// POST api/Account/ChangePassword 
    [AllowAnonymous] 
    [Route("ChangePassword")] 
    public async Task<IHttpActionResult> ChangePassword(ChangePasswordBindingModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword, 
      model.NewPassword); 

     if (!result.Succeeded) 
     { 
      return GetErrorResult(result); 
     } 

     return Ok(); 
    } 

Antwort

0

So fand ich die Antwort ... Ich habe vergessen, diese auf Antrag zu stellen:

authorization: bearer my_token 
0

GetUserID() ist eine Erweiterung auf IIdentity Verfahren, und es ist in Microsoft.AspNet.Identity.IdentityExtensions. Stellen Sie sicher, dass Sie den Namespace mit Microsoft.AspNet.Identity; hinzugefügt haben.

oder sonst können Sie

string currentUserId = User.Identity.GetUserId(); 
ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == currentUserId); 

verwenden, wenn Sie EF verwenden Sie dann auf Benutzer ApplicationUser Code

+0

Das ist keine Microsoft.AspNet.Identity.IdentityExtensions, nur Microsoft.AspNet.Identity.EntityFramework und Microsoft.AspNet.Identity.Owin; –

+0

Und ich kann nicht verwenden User.Identity.GetUserId(); weil das Ergebnis null ist. Es ist so, als hätte ich den Login gemacht und die Parameter wurden nicht gesetzt. –

+0

Welcher Authentifizierungstyp wird verwendet? –