Я долго искал эту вещь в Google, но все еще не могу получить правильный ответ. Я использую утверждение личности для аутентификации пользователя, и мне нужны некоторые значения утверждения на моей странице _Layout.cshtml. Однако я могу получить значения настраиваемых утверждений удостоверений, но не встроенные.
Здесь я установил свою личность:
var ident = new ClaimsIdentity(
new[] {
// adding following 2 claim just for supporting default antiforgery provider
new Claim(ClaimTypes.NameIdentifier, user.LoginId),
new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "ASP.NET Identity", "http://www.w3.org/2001/XMLSchema#string"),
new Claim(ClaimTypes.Name,user.UserName),
new Claim(ClaimTypes.Sid,user.UserId.ToString()),
new Claim("OperationType", user.OperationType.ToString()),
new Claim("ImageLink", user.ImageLink.ToString())
},
DefaultAuthenticationTypes.ApplicationCookie);
var claimsPrincipal = new ClaimsPrincipal(ident);
// Set current principal
Thread.CurrentPrincipal = claimsPrincipal;
и мой код страницы макета:
@using System.Security.Claims;
...........
@{
string userDesignation = ((ClaimsIdentity)User.Identity).FindFirst("OperationType").Value; ;
string userImage = ((ClaimsIdentity)User.Identity).FindFirst("ImageLink").Value; ;
}
Я могу получить значения своих пользовательских утверждений (ImageLink, OperationType), но не смог получить (Name, Sid) с тем же шаблоном. Некоторые из найденных мной ответов касаются методов расширения. Это единственный способ получить значения или есть другой способ? заранее спасибо
LayoutController
с помощью метода, который вы вызываете из своего макета с помощьюhtml.RenderPartial()
. - person Erik Philips   schedule 10.08.2018