2010-11-15 16 views

Répondre

3

Dans votre HomeController, l'action Index, rediriger vers la ClientController si le HttpContext.User est non nul:

public class HomeController : Controller 
{ 

    public ActionResult Index() 
    { 
     if (HttpContext.User != null) 
     { 
      RedirectToAction("Index", "Client"); 
     } 
    } 

} 

EDIT: Ou Utilisez Request.IsAuthenticated

public class HomeController : Controller 
{ 

    public ActionResult Index() 
    { 
     if (Request.IsAuthenticated) 
     { 
      RedirectToAction("Index", "Client"); 
     } 
    } 

} 
+0

Avec cette solution l'URL est changée, ce serait génial si l'URL restait la même –

+0

Je seconde une demande d'avoir l'URL inchangée – Phil

1

Il y en a plusieurs façons de résoudre cela. En fonction de vos besoins, vous pouvez implémenter un IAuthorizationFilter à cet effet et implémenter la méthode OnAuthorization de la façon suivante:

Vous utilisez ensuite le filtre d'action sur la méthode de votre contrôleur ou sur la classe de contrôleur.
public void OnAuthorization(AuthorizationContext filterContext) 
    { 
     IUser user = _currentUserProvider.CurrentUser; 
     if (user != null) 
     { 
      // you can perform perform additional user-authorization here...   
      if(_authorizationService.IsAuthorized(user)) 
      { 
       //user is authorized 
       return; 
      } 
      else 
      {  
       HandleUnAuthorizedRequest(filterContext); 
       return; 
      } 
     } 

     //user is not authenticated (not logged in) 
     HandleUnAuthenticatedRequest(filterContext); 
    } 

Voir http://msdn.microsoft.com/en-us/library/dd410209(v=VS.90).aspx pour plus d'informations sur les filtres d'action.

Maintenant, si vous voulez que toutes les demandes non authentifiées d'aller au ClientController, vous pouvez gérer l'événement AuthenticateRequest dans votre HttpApplication (Global.asax.cs habituellement) classe et mettre en œuvre quelque chose comme dans le ActionFilter ci-dessus.