2017-04-07 7 views
1

Ich musste aktuelle angemeldete Benutzer-ID in Controller verwenden. Es gibt immer null zurück. Ich bin bereits angemeldet. Hier ist mein Code.User.Identity.GetUserId() gibt immer Null in Controller-Aktion

if (string.IsNullOrEmpty(userId)) userId = User.Identity.GetUserId(); 

Ich habe versucht, den Referenz Zugabe

using Microsoft.AspNet.Identity; 

Ich habe auch versucht, einen Anspruch Zugabe

public const string UserId = "http://schemas.xmlsoap.org/ws/2014/03/mystuff/claims/UserId"; 
userIdentity.AddClaim(new Claim(CustomClaimTypes.UserId, Id)); 

Wenn ich versuche, den Anspruch zu holen, gibt es auch null.

(identity as ClaimsIdentity).FirstOrNull(CustomClaimTypes.UserId); 

Jede Hilfe wäre willkommen.

Zusätzliche Informationen in den Kommentaren angefordert:

Es ist die normale Anmeldung von aspnetuser zur Verfügung gestellt.

 var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false); 
     switch (result) 
     { 
      case SignInStatus.Success: 
       return RedirectToLocal(returnUrl); 
      case SignInStatus.LockedOut: 
       return View("Lockout"); 
      case SignInStatus.RequiresVerification: 
       return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); 
      case SignInStatus.Failure: 
      default: 
       ModelState.AddModelError("", "Invalid login attempt."); 
       return View(model); 
     } 

Request.IsAuthenticated gibt wahr zurück.

Ansprüche hinzugefügt hier.

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     userIdentity.AddClaim(new Claim(CustomClaimTypes.UserId, Id)); 

     return userIdentity; 
    } 

Cookies

+0

Wie melden Sie sich an? – trailmax

+0

Bearbeitete meine Frage mit Anmeldeinformationen. –

+0

Wenn Sie Request.IsAuthenticated testen gibt das wahr oder falsch zurück? –

Antwort

0

Hier ist die Antwort, habe ich es geschafft, es Arbeit zu bekommen.

Ich habe gerade die User.Identity.GetUserId(); in eine Hilfsklasse-Methode verschoben.

Ich möchte nur wiederholen, die Anfrage ist nicht die Login-Anfrage. Es ist eine separate Anfrage nach der Anmeldung.

Vielen Dank für Ihre Zeit.

Verwandte Themen