Je souhaite verrouiller l'accès à la page html (par exemple /manual/manual_A/index.html) si une certaine condition n'est pas remplie (par exemple HttpContext.Current.Request.Form ["key"]. ToString() .Equals ("a")), je souhaite rediriger vers une vue spécifique (par exemple/errorPage /) sinon continuer (par exemple/index). dans le registre Route ajouter:Comment puis-je restreindre l'accès à certaines pages dans ASP.NET MVC?
routes.MapRoute(
"ErrorPage",
"errorPage/",
new { controller = "Home", action = "ErrorPage" }
);
routes.MapRoute(
"Path",
"{*_request}",
new { controller = "Home", action = "Index" }
);
pour lire toutes les demandes. Dans contrôleur Accueil
[CustomAuthorize]
public ActionResult Index()
{
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(!condition)
filterContext.Result = RedirectToAction("PageError");
}
OnActionExecuting exécute à chaque requête, cependant, RedirectToAction ne se produit pas. Des indices sur ce que je fais de mal?
Votre RedirectToAction et vos actions de routage ne correspondent pas , vous pouvez vouloir vérifier cela aussi (PageError! = ErrorPage) – Tommy
Êtes-vous absolument certain que votre condition évalue à faux? Pouvez-vous vérifier cela sous un débogueur? Rappelez-vous également que l'autorisation se produit avant les autres filtres d'action. Si votre [CustomAuthorize] accroche OnAuthorization, vous voudrez peut-être définir le résultat à partir de ce filtre plutôt que d'avoir un filtre d'action distinct. – Levi
Salut, j'ai trouvé la solution à mon problème. Pendant la journée, mettez le code disponible. Merci à tous pour les conseils. – user468451