MVC 4 Страница за грешка при неоторизиран достъп

Опитвам се да създам персонализирани страници за грешки за MVC 4 приложение. Но изглежда не мога да намеря подходящ справочен материал, за да науча за това.

Имам конкретно изискване. Това е свързано с Unauthorized access грешка. Да кажем, че имам набор от страници, които са достъпни само за определен тип потребители. Потребителят, въведен Admin, е упълномощен за достъп до страницата на администратора, но потребителят, въведен Basic, не е.

И така, това, което искам да направя, е, ако потребителят, чийто тип е Basic, е влязъл в уебсайта и ако се опита да посети страницата на администратора, вместо да ги хвърля на страницата за вход, да им покажа съобщение в страница за грешка.

Може ли някой да ми помогне как да постигна това?




Отговори (1)


Какво ще кажете за филтър за изключения?

 [HandleError(Exception = typeof(UnauthorizedAccessException), View = "MyErrorPage")]
 public class MyController { }

Не мога да тествам това в момента, ако това не работи, уведомете ме и ще създам персонализиран филтър за тази цел.

АКТУАЛИЗАЦИЯ

Тъй като сте създали свой собствен персонализиран атрибут, ще предадете информация към вашия изглед от вашия атрибут чрез TempData:

 public void OnAuthorization(AuthorizationContext filterContext)
 {
     //Note you could assign a complex type here, let's just assign a string
     filterContext.Controller.TempData["ErrorDetails"] = "Here are my details"; 

     // Redirect to an "Unauthorized" controller
     filterContext.HttpContext.Response.Redirect(urlHelper.Action("Index", "Unauthorized"), true);
person Mister Epic    schedule 19.09.2013
comment
Благодаря за вашия отговор. Опитах отговора ти, но не се получи. Имам персонализиран атрибут за оторизиране. така че тази страница за грешка при неоторизиран достъп трябва да се показва само ако потребителят вече е влязъл, но не е упълномощен да разглежда съдържанието. така че използвах метод, споменат тук stackoverflow.com/questions/355700/, но това ли е най-добрият начин да го направите? Как да предам някакво полезно съобщение за грешка на изгледа. - person Amila; 20.09.2013
comment
съжалявам, връзката трябва да е stackoverflow.com/questions/13264496/ - person Amila; 20.09.2013