3

Je souhaite stocker un ID utilisateur dans un cookie, dans ASP.NET Core MVC. Où puis-je y accéder?Récupérer l'ID utilisateur d'une revendication dans un cookie dans MVC de base

Login:

var claims = new List<Claim> { 
    new Claim(ClaimTypes.NameIdentifier, "testUserId") 
}; 

var userIdentity = new ClaimsIdentity(claims, "webuser"); 
var userPrincipal = new ClaimsPrincipal(userIdentity); 
HttpContext.Authentication.SignInAsync("Cookie", userPrincipal, 
    new AuthenticationProperties 
    { 
     AllowRefresh = false 
    }); 

Déconnexion:

User.Identity.GetUserId(); // <-- 'GetUserId()' doesn't exists!? 

ClaimsPrincipal user = User; 
var userName = user.Identity.Name; // <-- Is null. 

HttpContext.Authentication.SignOutAsync("Cookie"); 

Il est possible dans MVC 5 ------------------ ->

Connexion:

// Create User Cookie 
var claims = new List<Claim>{ 
     new Claim(ClaimTypes.NameIdentifier, webUser.Sid) 
    }; 

var ctx = Request.GetOwinContext(); 
var authenticationManager = ctx.Authentication; 
authenticationManager.SignIn(
    new AuthenticationProperties 
    { 
     AllowRefresh = true // TODO 
    }, 
    new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie) 
); 

Get UserId:

public ActionResult TestUserId() 
{ 
    IPrincipal iPrincipalUser = User; 
    var userId = User.Identity.GetUserId(); // <-- Working 
} 

Mise à jour - capture d'écran Ajout des revendications qui sont nuls -------

userId est également null.

enter image description here

Répondre

7

Vous devriez être en mesure d'obtenir via le HttpContext:

var userId = context.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value; 

Dans l'exemple contexte est le HttpContext.

Les Startup.cs (juste les bases comme dans le modèle de site Web):

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddIdentity<ApplicationUser, IdentityRole>() 
     .AddEntityFrameworkStores<ApplicationDbContext>() 
     .AddDefaultTokenProviders(); 
    services.AddMvc(); 
} 

public void Configure(IApplicationBuilder app) 
{ 
    app.UseIdentity(); 
    app.UseMvc(); 
} 
+0

testerons plus tard. Mais je suis sûr que j'ai essayé "User.Claims" qui sont "null". Je ne sais pas pourquoi cependant :) – radbyx

+0

C'est aussi nul. Je suis sûr que votre ligne est correcte, mais je dois avoir besoin d'autre chose, je suppose. Comme quelque chose dans StartUp.cs je n'ai pas encore ajouté. ASP.NET Core MVC est nouveau pour moi, donc je n'ai peut-être pas ajouté toutes les dépendances nécessaires, pour que Claims fonctionne. – radbyx

+0

Voir la capture d'écran ajoutée :) – radbyx