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;
        }
    }
}

似乎可行,但我不确定这是否是正确的解决方案。

ASP.NET MVC2 handle controller's UnauthorizedAccessExcep

您还可以使用HandleErrorAttribute的重写来对控制器中未处理的异常执行自定义逻辑。

public class MyErrorAttribute : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        // Do Whatever
    }
}

和你的控制器:

[MyError]
public class SampleController : Controller { }

只需用[Authorize]属性修饰控制器动作或在控制器动作中将响应状态码设置为401。ASP。. NET框架会自动将您重定向到登录页面。

相关文章:
  • 没有找到相关文章