我需要在我的应用程序中实现一些授权机制。授权是基于从客户端发送到服务器的对象。控制器中的每个动作都将作为参数List。基于此列表中对象的嵌套属性,我必须授予或拒绝对控制器操作的访问。我的第一个方法是使用自定义过滤器属性ActionFilterAttribute授权
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
}
}
问题是这是否是很好的授权解决方案?也许这会更好地检查行动内的授权?