我正在尝试实现我的自定义授权属性,例如:
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/