我需要在我的应用程序中实现一些授权机制。授权基于从客户端发送到服务器的对象。控制器中的每个动作都作为参数列表。基于此列表中对象的嵌套属性,我必须授予或拒绝对控制器操作的访问权限。我的第一种方法是使用自定义过滤器属性
public class CustomAuthAttribute : FilterAttribute,IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
//SOME LOGIC HERE
}
}
但是,由于请求是 json 请求,我很难获取已发送对象的每个相关属性的值(我只能访问 json 值)。这就是为什么我认为我可以使用 ActionFilterAttribute 而不是 FilterAttribute。
public class ActionFilterAuthorization: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var castedList = filterContext.ActionParameters["key"] as List<MyObject>;
//logic here
//throw exception is access is not granted
}
}
问题是这是否是授权的好解决方案?也许检查动作内部的授权会更好?