我需要使用更复杂的授权,所以我创建了类,当用户没有操作权限时,可以抛出UnauthorizedAccessException。但是,我应该如何正确处理这个异常呢?当这个异常被抛出时,我需要重定向到登录页面,所以我认为我不能使用控制器的OnException方法。作为临时解决方案,我用这个:ASP.NET MVC2句柄控制器的UnauthorizedAccessException
public abstract class MyController : Controller
{
protected override void ExecuteCore()
{
try
{
base.ExecuteCore();
}
catch (UnauthorizedAccessException)
{
HttpContext.Response.StatusCode = 401;
}
}
}
看来它可以工作,但我不知道它是否是适当的解决方案。
感谢您的提示。
是否可以将此属性隐式添加到所有控制器? Becouse我需要这个处理程序全局工作。 – 2011-04-28 20:49:07
您可以将其添加到其他控制器继承的基础控制器。我在我的项目中这样做。 – Tejs 2011-04-28 20:49:52
谢谢。使用此代码的属性:filterContext.Result = new HttpUnauthorizedResult();这对我来说似乎是最好的。 – 2011-04-30 15:44:58