Dans IRouteHandler.GetHttpHandler () Puis-je rediriger?
Question
En glouton pour les techniques sexy non éprouvées que j’ai adoptées System.Web.Routing
dans mon application Web Forms pour gérer la navigation, etc. De plus, j'espère déplacer la sécurité basée sur les rôles de web.config vers les définitions de route elles-mêmes afin que je puisse dire & "Cette route n'est disponible que pour les rôles x, y &";
J'ai donc la classe qui implémente IRouteHandler et avant de tenter de charger une page particulière, elle vérifie si l'utilisateur est dans son ensemble de rôles autorisés. Ma question est, si ce n'est pas le cas, comment puis-je rediriger vers la page de connexion dans ce gestionnaire? Je sais qu'il est possible de charger la page de connexion dans ce cas, mais je préférerais une redirection en clair avec & "Returnto &"; page et tous.
public IHttpHandler GetHttpHandler(RequestContext requestContext) {
if ( AllowedRoles != null )
{
bool allowed = false;
for ( int i = 0; i < AllowedRoles.Length; i++ )
{
if ( requestContext.HttpContext.User.IsInRole( AllowedRoles[i] ) )
{
allowed = true;
break;
}
}
if ( !allowed )
{
???
}
}
La solution
Il est possible de faire une redirection à partir de GetHttpHandler. Il suffit d'utiliser:
requestContext.HttpContext.Response.Redirect("login.aspx");