2009-07-28 2 views
0

Я реализую класс для всех моих контроллеров, которые наследуют, которые перенаправляются на страницу входа, если пользователь не аутентифицирован. Однако строка RedirectToAction не перенаправляется. Можете ли вы помочь plesae?Проблема перенаправления MVC

public class SecureController : Controller 
    { 
     public SecureController() 
     { 
      if (User == null || !User.Identity.IsAuthenticated) 
      { 
       RedirectToAction("Logon", "Account"); 
      } 
     } 
    } 

ответ

1

Мое предложение было бы использовать вместо ActionFilter. Это будет намного проще. Вы можете сделать что-то вроде этого:

public class RequiresAuthenticationAttribute : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // You can do any custom authentication logic in here 

     if (User == null || !User.Identity.IsAuthenticated) 
     { 
      // This assumes that Account is the controller, and Logon is the action method. 
      // You might want to check your routes if this is still not working correctly 
      RedirectToAction("Logon", "Account"); 
     } 
    } 
} 

Это позволит затем просто поставить атрибут вашего метода действия в контроллере так:

[RequiresAuthentication] 
public ActionResult Index() 
{ 
    return View(); 
} 

Или, как уже отмечалось, если вы не нужна никакая логики пользовательской аутентификации, вы можете просто использовать AuthorizeAttribute:.

[Authorize] 
public ActionResult Index() 
{ 
    return View(); 
} 
+2

это уже встроено в См Авторизовать атрибут – terjetyl

+0

это также работает лучше, чем эта, так как она поддерживает катя ING. –

+0

Я предположил, что он должен был выполнить индивидуальную аутентификацию, так как он шел в направлении, в котором он был. Это тип атрибута, который я использую, я просто заменил всю свою логику аутентификации. – mkchandler

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