2010-11-15 14 views

Respuesta

3

En su HomeController, la acción Index, redirigir a la ClientController si el HttpContext.User no es nulo:

public class HomeController : Controller 
{ 

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

} 

EDIT: O Uso Request.IsAuthenticated

public class HomeController : Controller 
{ 

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

} 
+0

Con esta solución se cambia la URL, sería genial si la URL se mantuviera igual –

+0

En segundo lugar solicito que la URL no se modifique – Phil

1

Hay un buen número formas de resolver esto.

Dependiendo de sus requisitos, podría implementar un IAuthorizationFilter para este fin e implementar el método OnAuthorization algo como esto.

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

Luego use el actionFilter en su método de controlador o clase de controlador. Consulte http://msdn.microsoft.com/en-us/library/dd410209(v=VS.90).aspx para obtener más información acerca de los filtros de acción.

Ahora, si desea que todas las solicitudes no autenticadas para ir a la ClientController, se puede controlar el evento AuthenticateRequest en su clase HttpApplication (por lo general Global.asax.cs) y poner en práctica algo así como en el actionFilter anteriormente.

Cuestiones relacionadas