ASP.NET MVC2 обрабатывает UnauthorizedAccessException контроллера - PullRequest
0 голосов
/ 29 апреля 2011

Мне нужно использовать более сложную авторизацию, поэтому я создал класс, который может генерировать исключение UnauthorizedAccessException, когда у пользователя нет разрешения на действие. Но как мне правильно обработать это исключение? Мне нужно перенаправить на страницу входа, когда выдается это исключение, поэтому я думаю, что не могу использовать метод OnException контроллера. В качестве временного решения я использую это:

public abstract class MyController : Controller
{    
    protected override void ExecuteCore()
    {
        try
        {
            base.ExecuteCore();
        }
        catch (UnauthorizedAccessException)
        {
            HttpContext.Response.StatusCode = 401;
        }
    }
}

Кажется, это может сработать, но я не уверен, что это правильное решение.

Спасибо за советы.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Вы также можете использовать переопределение HandleErrorAttribute для выполнения пользовательской логики для необработанного исключения из вашего контроллера.

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

И ваш контроллер:

[MyError]
public class SampleController : Controller { }
0 голосов
/ 29 апреля 2011

Просто украсьте действие вашего контроллера атрибутом [Authorize] или установите код состояния ответа 401 в действиях вашего контроллера.Платформа ASP.NET выполнит всю работу, чтобы автоматически перенаправить вас на страницу входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...