У меня есть проект (MVC5 с шаблоном SPA), в котором мне нужно скопировать функциональность из другого проекта.User.IsInRole () в Razor не работает.
В основном роли назначаются так:
var currenIdentity = httpContext.User.Identity;
var roles = new List<string>();
roles.Add(Startup.AdministrationRole);
roles.Add(Startup.UserRole);
GenericPrincipal principal = new GenericPrincipal(currenIdentity, roles.ToArray());
httpContext.User = principal;
В Razor у меня есть
@if (User.IsInRole(Startup.AdministrationRole))
{
@Html.ActionLink("Administrator »", "Config", "Admin", new { }, new { @class = "btn btn-default" })
}
ВВ исходном проекте при отладке свойство User
имеет тип System.Security.Principal.GenericPrincipal
Но при отладке RazorПосмотрите в моем новом проекте свойство User
другого типа: System.Security.Claims.ClaimsPrincipal
Мне любопытно, почему есть разница, и поэтому яне может проверить роли непосредственно с System.Security.Claims.ClaimsPrincipal
?