当前位置: 代码迷 >> ASP.NET >> 关于MVC的IAuthorizationFilter,验证失败如何停止运行Action
  详细解决方案

关于MVC的IAuthorizationFilter,验证失败如何停止运行Action

热度:296   发布时间:2013-02-25 00:00:00.0
关于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的更专业
  相关解决方案