ASP.NET MVC2 handle controller's UnauthorizedAccessExcep
本文关键字:UnauthorizedAccessExcep controller NET MVC2 handle ASP | 更新日期: 2023-09-27 17:53:54
我需要使用更复杂的授权,所以我创建了一个类,当用户没有操作权限时可以抛出UnauthorizedAccessException。但是我应该如何正确地处理这个异常呢?当这个异常被抛出时,我需要重定向到登录页面,所以我认为我不能使用控制器的OnException方法。作为临时解决方案,我使用以下命令:
public abstract class MyController : Controller
{
protected override void ExecuteCore()
{
try
{
base.ExecuteCore();
}
catch (UnauthorizedAccessException)
{
HttpContext.Response.StatusCode = 401;
}
}
}
似乎可行,但我不确定这是否是正确的解决方案。
您还可以使用HandleErrorAttribute的重写来对控制器中未处理的异常执行自定义逻辑。
public class MyErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
// Do Whatever
}
}
和你的控制器:
[MyError]
public class SampleController : Controller { }
只需用[Authorize]
属性修饰控制器动作或在控制器动作中将响应状态码设置为401。ASP。. NET框架会自动将您重定向到登录页面。