asp.net-mvc - 授权和温莎

标签 asp.net-mvc dependency-injection castle-windsor authorize

我正在尝试实现我的自定义授权属性,例如:

 public class MyCustomAuth : AuthorizeAttribute
{
    private readonly IUserService _userService;

    public MyCustomAuth(IUserService userService)
    {
        _userService= userService;
    }
... continued
 }

我正在使用 CaSTLe Windsor 来自动解决依赖关系。

当我尝试将它用作操作方法的属性时,显然我被要求传递参数,或者我需要一个无参数的构造函数,它应该以某种方式解决它的依赖关系。

我尝试使用属性注入(inject)依赖项,但 Windsor 没有注入(inject)它。

我现在看到的唯一选择是手动实例化具体对象依赖项,从而失去 Windsor 的好处。

你将如何解决这个问题?

最佳答案

您不能将 DI 与属性一起使用——它们是元数据;

public class MyCustomAuth : AuthorizeAttribute
{
    public void OnAuthorization(...)
    {
         IUserService userService = ServiceLocator.Current.GetInstance<IUserService>();
    }
}

了解温莎/ServiceLocator here .

查看类似问题 here .

关于asp.net-mvc - 授权和温莎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689112/

相关文章:

c# - Entity Framework - 使用数据注释的属性的默认值

c# - 空对象不能转换为值类型

c# - Simple Injector 是否有任何技术原因无法支持 .NET 4.0 上的 Web API?

.net - Microsoft Unity 中的转发类型

ASP.NET MVC 用户 - 您是否错过了 WebForms 中的任何内容?

scala - Play with @ 中的依赖注入(inject) Controller

c# - 分布式系统中的依赖注入(inject)

wcf - 如何使用一个 WcfFacility 托管多个服务

asp.net-mvc - 更改 URL 而不更改重定向的实际路径