Ik ben net overgestapt op het gebruik van de nieuwe 2.0-versie van het Identity Framework. In 1.0 kon ik een gebruikersobject verkrijgen door manager.FindByIdAsync(User.Identity.GetUserId())
te gebruiken. De methode GetUserId()
lijkt niet te bestaan in 2.0.
Het enige wat ik nu kan bedenken is om manager.FindByEmailAsync(User.Identity.Name)
te gebruiken die verwijst naar het gebruikersnaamveld in de gebruikerstabel. In mijn applicatie is dit ingesteld op hetzelfde als het e-mailveld.
Ik zie dat dit later problemen veroorzaakt wanneer iemand zijn e-mail moet bijwerken. Is er een manier om het huidige ingelogde gebruikersobject te krijgen op basis van een onveranderlijke waarde (zoals het id-veld)in het Identity 2.0 Framework?
Antwoord 1, autoriteit 100%
GetUserId()
is een extensiemethode op IIdentity
en bevindt zich in Microsoft.AspNet.Identity.IdentityExtensions
. Zorg ervoor dat je de naamruimte hebt toegevoegd met using Microsoft.AspNet.Identity;
.
Antwoord 2, autoriteit 54%
Om CurrentUserId in Asp.net Identity 2.0 te krijgen, importeert u eerst Microsoft.AspNet.Identity
:
C#:
using Microsoft.AspNet.Identity;
VB.NET:
Imports Microsoft.AspNet.Identity
En bel dan User.Identity.GetUserId()
waar je maar wilt:
strCurrentUserId = User.Identity.GetUserId()
Deze methode retourneert het huidige gebruikers-ID als gedefinieerd gegevenstype voor het gebruikers-ID in de database (de standaard is String
).
Antwoord 3, autoriteit 14%
Voor het geval je net als ik bent en het Id-veld van de gebruikersentiteit een Int is of iets anders dan een string,
using Microsoft.AspNet.Identity;
int userId = User.Identity.GetUserId<int>();
zal het lukken
Antwoord 4, autoriteit 5%
Ik had hetzelfde probleem. Ik gebruik momenteel Asp.net Core 2.2. Ik heb dit probleem opgelost met het volgende stukje code.
using Microsoft.AspNetCore.Identity;
var user = await _userManager.FindByEmailAsync(User.Identity.Name);
Ik hoop dat iemand hier iets aan heeft.