我需要使用更复杂的授权,所以当用户没有操作权限时,我创建了可以抛出UnauthorizedAccessException的类。但是我应该如何正确处理这个异常呢?抛出此异常时我需要重定向到登录页面,所以我想我不能使用控制器的OnException方法。作为临时解决方案,我使用它:
public abstract class MyController : Controller
{
protected override void ExecuteCore()
{
try
{
base.ExecuteCore();
}
catch (UnauthorizedAccessException)
{
HttpContext.Response.StatusCode = 401;
}
}
}
它似乎可行,但我不确定它是否是正确的解决方案。
感谢您的提示。
答案 0 :(得分:0)
只需使用[Authorize]
属性修饰控制器操作,或在控制器操作中将响应状态代码设置为401。 ASP.NET框架将自动将您重定向到登录页面。
答案 1 :(得分:0)
您还可以使用HandleErrorAttribute的覆盖来对控制器的未处理异常执行自定义逻辑。
public class MyErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
// Do Whatever
}
}
你的控制器:
[MyError]
public class SampleController : Controller { }