Как установить страницу с ошибкой отказа в доступе в Asp.Net MVC 5?

Я работаю над проектом Asp.Net MVC 5 с собственным шаблоном индивидуальной учетной записи пользователя. Я установил роли для пользователей. Я разрешил только определенные роли для определенных методов действий. Но проблема в том, что даже когда я вхожу в систему с ролью, не имеющей разрешения на доступ к определенному методу действия (например, метод удаления), она переводит меня на страницу входа. Таким образом, я могу войти в систему с другим пользователем, пока я уже вошел в систему, и это не имеет смысла. Почему он так обрабатывает фильтры авторизации ?!

Итак, как сделать так, чтобы вместо перехода на страницу входа в систему выдавалась настраиваемая ошибка, чтобы отображалось представление отказа в доступе?

Я пытаюсь решить это из ответов на похожие вопросы, но они меня ни к чему не приводят!


person Arianit    schedule 04.08.2016    source источник
comment
Не знаю, видели ли вы этот ответ, но мне он помог. Это было еще одним полезным   -  person Lee Harris    schedule 04.08.2016
comment
этого я не нашел. Я проверяю ответ и другую ссылку   -  person Arianit    schedule 04.08.2016
comment
@LeeHarris, когда я пытаюсь перейти по ссылке, у меня возникает другая проблема, ошибка времени выполнения: Server Error in '/' Application. Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated., а URL-адрес выглядит следующим образом: Shared / Error? Aspxerrorpath = / Reports / delete / 1 Вы можете мне помочь?   -  person Arianit    schedule 04.08.2016
comment
Я только что подтвердил, что могу получить доступ к обоим. Вот URL dotnetdevdude.com/Blog/2011/11/21/ и stackoverflow.com/questions/977071/, попробуйте еще раз   -  person Lee Harris    schedule 04.08.2016
comment
Хорошо, вот как это. Когда я хочу что-то отредактировать, мне нужно перейти к представлению. Поэтому я исправил его, чтобы вместо этого перемещать меня в другое место, когда у меня нет разрешения. Но для удаления я использую модальное окно, а для этого просто метод удаления сообщения. И поэтому я получаю ту же ошибку, о которой упоминалось ранее. Код статуса: 500 @LeeHarris.   -  person Arianit    schedule 04.08.2016
comment
Хорошо, понял, почему возникает эта ошибка, не имеет ничего общего с тем, о чем мы говорили ... спасибо, что указал мне на эти ссылки   -  person Arianit    schedule 04.08.2016
comment
охватывает ли этот ответ проблему модели удаления? Если вы поместите кнопку удаления в этот вызов, она не будет отображаться для пользователей, которые не в правильной роли.   -  person Lee Harris    schedule 04.08.2016
comment
ну, я сделал кнопку скрытой для неавторизованных пользователей. но когда я пытался удалить его из панели ссылок, я получил неверную ошибку сервера. Я должен сделать более удобную ошибку для кода состояния 500   -  person Arianit    schedule 04.08.2016
comment
Ошибка недопустимого сервера (500) - это проблема, отличная от неавторизованной (403) ошибки. Предлагаю открыть новый вопрос.   -  person Lee Harris    schedule 04.08.2016


Ответы (1)


Я бы посоветовал что-нибудь изменить пользовательский интерфейс в зависимости от уровня безопасности пользователя. Вы можете обернуть вызов удаления примерно так:

@if (ViewContext.HttpContext.User.IsInRole("role name"))
{
    // Authorized
}
person Lee Harris    schedule 04.08.2016