Sto sviluppando un'applicazione Web MVC 5 utilizzando l' approccio Database First di Entity Framework 5 . Sto usando OWIN per l'autenticazione degli utenti. Di seguito viene mostrato il mio metodo di accesso all'interno del controller dell'account.
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);
}
Come puoi vedere, sto creando una ClaimsIdentity e aggiungendovi diverse attestazioni, quindi passandola a OWIN utilizzando AuthenticationManager per eseguire l'accesso.
Il problema che sto riscontrando è che non sono sicuro di come accedere alle attestazioni nel resto della mia applicazione, in Controller o in Razor Views.
Avevo provato l'approccio elencato in questo tutorial
Ad esempio, ho provato questo nel codice del controller nel tentativo di ottenere l'accesso ai valori passati nelle attestazioni, tuttavia, l'utente. Reclami è uguale a null
var ctx = HttpContext.GetOwinContext();
ClaimsPrincipal user = ctx.Authentication.User;
IEnumerable<Claim> claims = user.Claims;
Forse mi manca qualcosa qui.
AGGIORNARE
Sulla base della risposta di Darin, ho aggiunto il suo codice ma non riesco ancora a vedere l'accesso ai reclami. Si prega di vedere lo screenshot qui sotto che mostra ciò che vedo quando si passa con il mouse sull'identità.