User
オブジェクトから私のビューのカスタム属性にアクセスしたいとします。私は認証のためのカスタム属性を実装しています。私はHttpContext.Current.User
を私のglobal.asaxの中に変更しています。ビュー内の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
から派生作るべきであるとこのようなタイプを爆発させますか?
User
プロパティをキャストする必要が
...
IIdentity Identity { get; }
bool IsInRole(string role);
bool IsAdministrator;
...
ビューで@Userを使用できますか? –
カスタムの 'RazorViewBase'クラスを作成し、それからビューを派生させることができます。カスタムクラスは、独自のビューへのユーザー実装を提供できます。 –
@ケビン、そうです –