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.
Con esta solución se cambia la URL, sería genial si la URL se mantuviera igual –
En segundo lugar solicito que la URL no se modifique – Phil