私はCastle Windsorです。コントローラコンストラクタで使用されているリポジトリを渡す際に効果的です。ASP.NET MVCのauthorize属性にリポジトリを渡すには
private IStoryRepository Repository;
public StoryController(IStoryRepository Repository)
{
this.Repository = Repository;
}
ここで、メイン管理メニューを表示する管理領域にあるアクションがあります。私は私が得ることができるどのように城がそれのような属性のコンストラクタにリポジトリを渡すだけで、ユーザーにログインし、管理者が(ユーザテーブルのちょうどisAdminフラグ)
[AdminAuthorize]
public ActionResult Menu()
private IStoryRepository Repository;
/// <summary>
/// Initializes a new instance of the <see cref="AdminAuthorizeAttribute"/> class.
/// </summary>
public AdminAuthorizeAttribute(IStoryRepository Repository)
{
this.Repository = Repository;
}
/// <summary>
/// Checks if the user is authorised
/// </summary>
/// <param name="httpContext">The HTTP context.</param>
/// <returns>
/// <c>true</c> if authorized; otherwise, <c>false</c>.
/// </returns>
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return this.Repository.UserIsAdmin(httpContext.User.Identity.Name);
}
であることを確認するカスタム認可属性を使用していましたコントローラーのコンストラクターはどうですか?