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.
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;
où idClaimType
est le type de revendication qui stocke votre identité. Selon le cadre, ce serait généralement soitClaimTypes.NameIdentifier
(= "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier"
)
ouJwtClaimTypes.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);
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>();
Essaye celui-là:
var user = await userManager.GetUserAsync(HttpContext.User);
var ID = user.Id;
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);
}
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.