wake-up-neo.com

Wie bekomme ich eine Benutzer-ID des angemeldeten Benutzers in .NET Core 2.0?

Ich habe eine eckige 2-Anwendung mit .NET Core und MVC erstellt. Ich möchte die Login-ID des Benutzers kennen. Wie wird die ID eines Benutzers im .net Core angemeldet?

Dies ist meine erste kantige Anwendung. Ich habe folgenden Link zum Starten von https://blogs.msdn.Microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices verwendet/

Ich möchte Windows-Authentifizierung verwenden, um die Anmelde-ID in einem Controller zu erhalten.

5
Mandar Patil

Das hängt wirklich davon ab, welche Art von Authentifizierung Sie in Ihrer App haben.

In Anbetracht Ihrer Erwähnung von Angular bin ich nicht sicher, welches Framework Sie für die Authentifizierung verwenden und welche Einstellungen Sie vornehmen.

Um Sie in die richtige Richtung zu bewegen, erhalten Sie den entsprechenden Anspruch von der Benutzeridentität. Etwas wie das:

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

dabei ist idClaimType der Typ des Anspruchs, in dem Ihre Identität gespeichert ist. Je nach Rahmen wäre das normalerweise entweder der Fall
ClaimTypes.NameIdentifier (= "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier")
oder
JwtClaimTypes.Subject (= "sub")

Wenn Sie Asp.Net Core Identity verwenden, können Sie deren Hilfemethode für die Variable UserManager verwenden, um den Zugriff darauf zu vereinfachen:

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

Angenommen, Sie verwenden ASP.NET Identity (in Ihrer Controller-Aktion):

User.Identity.GetUserId();

oder (wenn Sie einen benutzerdefinierten Schlüsseltyp verwenden)

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

Probier diese:

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

Ich benutze dieses:

    private UserManager<ApplicationUser> _userManager;

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

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

p.s. Weitere nützliche Methoden finden Sie in UserManager.

1
Ertan Hasani