私はウィンザー城であり、使用されているリポジトリを渡す際にコントローラーコンストラクターに最適です。
private IStoryRepository Repository;
public StoryController(IStoryRepository Repository)
{
this.Repository = Repository;
}
これで、メインの管理メニューを表示するための管理領域にあるアクションができました。ログインしているユーザーが管理者であることを確認するカスタム認証属性を使用しました (users テーブルの 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);
}
コントローラ コンストラクタの場合のように、Castle にリポジトリを属性コンストラクタに渡すにはどうすればよいですか?