web-dev-qa-db-fra.com

Comment obtenir l'ID utilisateur de l'utilisateur connecté dans .NET Core 2.0?

J'ai créé une application angulaire 2 utilisant .NET Core et MVC . Je souhaite connaître l'identifiant de connexion de l'utilisateur. Comment se connecter identifiant d'un utilisateur dans .net core?

Ceci est ma première application angulaire. J'ai utilisé le lien suivant pour démarrer https://blogs.msdn.Microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/

Je veux utiliser l'authentification Windows, pour obtenir l'identifiant de connexion dans un contrôleur.

5
Mandar Patil

Cela dépend vraiment du type d'authentification que vous avez dans votre application.

Étant donné que vous avez mentionné Angular, je ne sais pas quel framework vous utilisez pour l’authentification ni quels sont vos paramètres.

Pour que vous alliez dans la bonne direction, votre ligne de conduite serait d'obtenir la revendication pertinente de l'identité de l'utilisateur. Quelque chose comme ça:

var ident = User.Identity as ClaimsIdentity;
var userID = ident.Claims.FirstOrDefault(c => c.Type == idClaimType)?.Value;

idClaimType est le type de revendication qui stocke votre identité. Selon le cadre, ce serait généralement soit
ClaimTypes.NameIdentifier (= "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier")
ou
JwtClaimTypes.Subject (= "sub")

Si vous utilisez Asp.Net Core Identity, vous pouvez utiliser leur méthode d'assistance sur la variable UserManager pour en simplifier l'accès:

UserManager<ApplicationUser> _userManager;
[…]
var userID = _userManager.GetUserId(User);
14
Artiom Chilaru

En supposant que vous utilisez ASP.NET Identity, qu'en est-il (dans l'action de votre contrôleur):

User.Identity.GetUserId();

ou (si vous utilisez un type de clé personnalisé)

User.Identity.GetUserId<TKey>();
3
OmarMuscatello

Essaye celui-là:

var user = await userManager.GetUserAsync(HttpContext.User);
var ID = user.Id;
3
Saad Hasan
private readonly ApplicationDbContext _dbContext;
private readonly IHttpContextAccessor _httpContext;
private readonly string _userId;

public MyController(UserManager<ApplicationUser> _userManager, IHttpContextAccessor _httpContext)
{
    this._userManager = _userManager;
    this._httpContext = _httpContext;

    _userId = this._userManager.GetUserId(this._httpContext.HttpContext.User);
}
2
Ian Foster

J'utilise celui-ci:

    private UserManager<ApplicationUser> _userManager;

    public ClassConstructor(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }

    public void OnGet()
    {
        var id = _userManager.GetUserId(User);
    }

p.s. Vous pouvez trouver une méthode plus utile dans UserManager.

1
Ertan Hasani