我想從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,是的,它是 –