我是Castle Windsor,对于控制器构造函数中传递正在使用的存储库,它非常有效。
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);
}
如何让Castle像控制器构造函数一样将存储库传递到属性构造函数中?