2010-11-15 11 views

risposta

3

Nella tua HomeController, azione Index, reindirizzare al ClientController se il HttpContext.User non è nullo:

public class HomeController : Controller 
{ 

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

} 

EDIT: o utilizzare Request.IsAuthenticated

public class HomeController : Controller 
{ 

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

} 
+0

Con questo URL soluzione è cambiato, sarebbe bello se URL rimase lo stesso –

+0

I seconda una richiesta di avere l'URL invariato – Phil

1

ci sono un bel po ' modi per risolvere questo.

A seconda delle esigenze, è possibile implementare un IAuthorizationFilter per questo scopo e implementare il metodo OnAuthorization in questo modo.

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); 
    } 

Quindi si utilizza actionFilter sul metodo del controller o sulla classe controller. Vedere http://msdn.microsoft.com/en-us/library/dd410209(v=VS.90).aspx per ulteriori informazioni sui filtri di azione.

Ora, se si desidera che tutte le richieste non autenticate per andare al ClientController, è possibile gestire l'evento AuthenticateRequest nella classe HttpApplication (di solito Global.asax.cs) e realizzare qualcosa di simile nel ActionFilter sopra.

Problemi correlati