2014-11-16 4 views
0

Я сделал специальное разрешение в своем HomeController. у меня есть это:Перенаправление на Login.cshtml MVC 5 Razor

[CustomAuthorize] 
ActionResult Planning() 

Когда пользователь подключен, он может достичь конкретной страницы. Я сделал URL для этого. Но если пользователь не подключен, я хочу перенаправить его на страницу входа, но у меня была ошибка URL-адреса с "~/Views/Account/Login.cshtml".

Заранее благодарен!

Редактировать мой код:

public class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (System.Web.HttpContext.Current.User.Identity != null 
      && System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 
     { 
      if (System.Web.HttpContext.Current.User.IsInRole("student")) 
      { 
       var result = new ViewResult(); 
       result.ViewData.Model = "Home"; 
       result.ViewName = "~/Views/Roles/Student.cshtml"; 
       result.MasterName = "~/Views/Shared/_Layout.cshtml"; 
       filterContext.Result = result; 
      } 
     } 
     else 
     { 
      here the redirection to the Account/Login page 
     } 

    } 
} 
+1

Показать код для атрибута 'CustomAuthorize' ... – HTX9

+0

Мой код уже присутствует – Memo

ответ

0
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
     { 
      filterContext.Result = new RedirectResult("/");//Your path goes here 
      base.HandleUnauthorizedRequest(filterContext); 
     } 

Try вернуть истина/ложь от OnAuthorize, это ударит обработчик по возврату false. Это лучший подход. Попробуйте это. Этот обработчик по умолчанию вступает в действие, когда авторизация завершается с ошибкой. Надеюсь, что это работает. Спасибо

+0

Он работает! Спасибо, мой друг ! – Memo

0

вам нужно использовать контекстную фильтр что-то в этом

filterContext.Result = new RedirectResult("/home/login"); 
+0

Благодарим вас за помощь! Оно работает ! – Memo

Смежные вопросы