我想从User
对象访问我的视图中的一些自定义属性。我正在实现身份验证的自定义属性,我正在更改我的global.asax中的HttpContext.Current.User
。如何访问视图中的HttpContext.Current.User自定义属性
这是User
类
public class User : IPrincipal
{
...
public bool IsAdministrator => IsInRole(RolesConstants.GlobalAdministrator);
...
}
这里是我设置在我Global.asax
protected void WindowsAuthentication_OnAuthenticate(object sender, WindowsAuthenticationEventArgs e)
{
...
var winUser = new User
{
EMail = user.Person.Email,
FirstName = user.Person.FirstName,
LastName = user.Person.LastName,
Identity = wi,
NetworkAccountName = user.UserName,
UserId = user.UserName,
Roles = userRoles,
};
HttpContext.Current.User = winUser;
}
例如,我怎么能这样做?
<button type="button" visible="@User.IsAdministrator" id="btn"></button>
由于User
对象已经接近我不想在Model
传递或使用字符串中的观点,如@User.IsInRole("Admin")
编辑:我应该做一个自定义类型从IPrinciple
派生并探讨这样的类型?
...
IIdentity Identity { get; }
bool IsInRole(string role);
bool IsAdministrator;
...
您确定@User在视图中可用吗? –
你可以创建一个自定义的'RazorViewBase'类并从它派生你的视图。自定义类可以为用户提供自己的视图实现。 –
@Kevin,是的,它是 –