gpt4 book ai didi

asp.net-mvc - 如何将存储库传递给 ASP.NET MVC 中的授权属性

转载 作者:行者123 更新时间:2023-12-03 17:21:29 26 4
gpt4 key购买 nike

我是温莎城堡,它非常适合 Controller 构造函数传入正在使用的存储库。

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 像 Controller 构造函数一样将存储库传递给属性构造函数?

最佳答案

你基本上有两个选择。将过滤器包装在代理中,可以找到一个很好的例子 here .

或者,在您的自定义过滤器中,您可以进行显式容器调用。例如使用 StructureMap (我没有广泛使用过城堡)

ObjectFactory.GetInstance(IStoryRepository)

可能有第三种方法是扩展 ActionInvoker 来进行注入(inject),但我不确定如何做到这一点。

关于asp.net-mvc - 如何将存储库传递给 ASP.NET MVC 中的授权属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1292542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com