在我正在创建的MVC项目中,我有以下内容RequirePermissionAttribute可以放在需要特定权限的任何操作上(本例中已简化):
public class RequirePermissionAttribute : ActionFilterAttribute, IAuthorizationFilter
{
public Operation Permissions { get; set; }
public RequirePermissionAttribute() { }
public RequirePermissionAttribute(Operation permissions)
{
this.Permissions = permissions;
}
public bool AuthorizeCore(HttpContextBase httpContext)
{
IAuthorizationService authServ = new ASPNETAuthorizationService();
return authServ.Authorize(httpContext);
}
public void OnAuthorization(AuthorizationContext filterContext)
{
Enforce.ArgNotNull(filterContext);
if (this.AuthorizeCore(filterContext.HttpContext))
{
// code snipped.
}
else
{
// code snipped.
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以问题显然是我的authorize属性依赖于ASPNETAuthorizationService我创建的属性.我不能去构造函数方式,因为属性是编译时检查的.
有一点需要提及的是,我正在使用自己制作的小IoC,并且它还没有支持属性注入(尚未).当然,如果我确实去了房产注入路线,我必须增加对它的支持(我必须做一些研究).
将某些东西注入属性类的最佳方法是什么?