日期:2014-05-17  浏览次数:20383 次

关于MVC的IAuthorizationFilter,验证失败怎么停止运行Action?
采用 IAuthorizationFilter 做一个类权限验证
比如说
访问的 是 /Home/Check/4

这时 在运行 Action “Check”之前会运行实现IAuthorizationFilter的filter,而在这个filter中做一个验证,并且失败了,不想再继续运行 Action "Check"了,我要怎么终止呢?

在public void OnAuthorization(AuthorizationContext filterContext)中

filterContext 没有什么 Cancel的属性啊~

怎么停止运行呢?

谢谢。
------最佳解决方案--------------------
呵呵
filterContext.Result = new EmptyResult();
------其他解决方案--------------------
filterContext.HttpContext.Response.End();
这个试试呢
------其他解决方案--------------------
不解

为什么 MVC1.0里面 在public void OnAuthorization(AuthorizationContext filterContext)中 

filterContext 有就有一个cancel属性 来停止接下来的Action运行。

为什么2.0就没有了?

用什么替代了吗?
------其他解决方案--------------------
引用:
filterContext.HttpContext.Response.End();
 这个试试呢


这个我试过了,只是不显示页面内容了,但是Action的还是运行的。。。
------其他解决方案--------------------


又没人回~

看来大家都不用 Asp.net mvc啊

嘎嘎

我用了用  感觉很像 ROR
------其他解决方案--------------------
引用:
呵呵
filterContext.Result = new EmptyResult();


谢谢~


正解 
------其他解决方案--------------------
引用:
引用:
呵呵
filterContext.Result = new EmptyResult();


谢谢~


正解


我看未必是正解。

filterContext.Result = new HttpUnauthorizedResult( );

这才是正道。
------其他解决方案--------------------
遇到类似问题,应该7楼为正解。
------其他解决方案--------------------
filterContext.Result = new EmptyResult();
以上http状态为200


filterContext.Result = new HttpUnauthorizedResult( );
以上http状态为401

都可以阻止Action执行

如果是权限限制  401的更专业