2010-01-21 5 views
0

Je possède ce morceau de code:Obtenez l'itinéraire en mode non authentifié/déconnexion avec mvc?

public class Authenticate : ActionFilterAttribute 
{ 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      filterContext.HttpContext.Response.Redirect("/"); 
     } 
    } 
} 

Je me demandais s'il est possible de faire rediriger vers le point de vue de l'action = « Connexion » controller = « AdminLogin »? Et comment puis-je passer un message à la vue de connexion qui dit «vous devez vous connecter pour y accéder» ou similaire?

/M

Répondre

0

Voici comment je résolu le redirect-partie:

public class Authenticate : ActionFilterAttribute 
{ 

    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      RedirectToRoute(filterContext, 
       new 
       { 
        controller = "AdminLogin", 
        action = "AdminLogin" 
       }); 
     } 
    } 



    private void RedirectToRoute(ActionExecutingContext context, object routeValues) 
    { 
     var rc = new RequestContext(context.HttpContext, context.RouteData); 

     string url = RouteTable.Routes.GetVirtualPath(rc, 
      new RouteValueDictionary(routeValues)).VirtualPath; 

     context.HttpContext.Response.Redirect(url, true); 
    } 

} 

Je ne sais pas si elle est optimale, mais semble faire le travail correctement

Questions connexes