Je développe une application Web MVC 5 en utilisant l' approche Entity Framework 5 Database First . J'utilise OWIN pour l'authentification des utilisateurs. Ci-dessous, ma méthode de connexion dans mon contrôleur de compte.
public ActionResult Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = _AccountService.VerifyPassword(model.UserName, model.Password, false);
if (user != null)
{
var identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, model.UserName), }, DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.Role, "guest"));
identity.AddClaim(new Claim(ClaimTypes.GivenName, "A Person"));
identity.AddClaim(new Claim(ClaimTypes.Sid, user.userID)); //OK to store userID here?
AuthenticationManager.SignIn(new AuthenticationProperties
{
IsPersistent = model.RememberMe
}, identity);
return RedirectToAction("Index", "MyDashboard");
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Comme vous pouvez le voir, je crée un ClaimsIdentity et y ajoute plusieurs revendications, puis je le transmets à OWIN à l'aide de AuthenticationManager pour effectuer la connexion.
Le problème que je rencontre est que je ne sais pas comment accéder aux revendications dans le reste de mon application, que ce soit dans les contrôleurs ou dans les vues Razor.
J'avais essayé l'approche listée dans ce tutoriel
Par exemple, j'ai essayé ceci dans mon code de contrôleur pour tenter d'accéder aux valeurs passées dans les revendications, cependant, l'utilisateur.Claims est égal à null
var ctx = HttpContext.GetOwinContext();
ClaimsPrincipal user = ctx.Authentication.User;
IEnumerable<Claim> claims = user.Claims;
Il me manque peut-être quelque chose ici.
METTRE À JOUR
Sur la base de la réponse de Darin, j'ai ajouté son code mais je n'arrive toujours pas à voir l'accès aux revendications. Veuillez voir la capture d'écran ci-dessous montrant ce que je vois lorsque je passe la souris sur l'identité.