我正在尝试编写自定义授权过滤器来检查用户的权限。我创建了我的Filter类,并使用我的自定义属性修饰了我的动作。我的问题是,当执行以下语句时:
var controller = (Mvc.Controllers.MyController) filterContext.Controller;
var id = Int32.Parse(controller.Request.QueryString["id"]);
方法
IAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext)
我得到一个空引用错误。当我调试时,我可以看到QueryString属性绝对没有键(它是一个GET动作,带有“id”参数)。您是否认为在执行授权过滤器时,查询字符串尚未绑定到te控制器? (授权过滤器执行得太早)。但是,如果是这种情况,授权过滤器的预期用途是什么?你认为正确的方法是使用Action Filter并覆盖OnActionExecuting()吗?
答案 0 :(得分:1)
评论中建议并且OP接受的答案是:id是路由的一部分而不是查询字符串。