Ensemble 403 page d'erreur en MVC
Je remplace la classe pour effectuer personnalisé Autorisation
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext)
{
if (filterContext.HttpContext.Request.IsAuthenticated)
{
filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult(403);
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
}
maintenant dans le web.config j'ai configuré la page d'erreur 403
<customErrors defaultRedirect="/Shared/Error" mode="On">
<error statusCode="403" redirect="/Shared/UnAuthorize" />
</customErrors>
mais le navigateur affiche toujours m'page d'erreur par défaut pour 403,
ce que je suis en manque, ici, toute idée
OriginalL'auteur Saboor Awan | 2011-08-11
Vous devez vous connecter pour publier un commentaire.
Juste un petit conseil/note d'ailleurs Max B. réponse:
Quand je suis en utilisant des erreurs j'en fais un
ErrorsController
, et de supprimer l'autorisation ActionResult et effectuez les opérations suivantes:Cette façon, je peux ajouter des informations supplémentaires ou faire d'autres actions dans mon contrôleur, par exemple:
De cette façon, vous avoir un peu plus de contrôle sur ce qui se passe.
très serviable lien stackoverflow.com/questions/2504923/...
J'ai essayé la même chose avec pas de chance. La méthode de contrôleur n'est jamais appelée. Avez-vous résoudre le problème avec cette réponse, ou avec le lien que vous avez posté?
OriginalL'auteur Kevin Cloet
Je sais que c'est une très vieille question, mais je poste pour quelqu'un qui risque d'avoir le même problème. Comme moi, j'ai eu le même problème et résolu. Si vous voulez déclencher l'élément customErrors dans le web.la configuration, vous pouvez essayer ci-dessous.
où avez-vous mis? Serait bien de l'ajouter. Peut-il être spécifique à la Zone?
Vous pouvez les mettre dans votre classe attribut personnalisé. Et pourriez-vous donner plus de détails à propos de "Zone"?
Mon 50 cents, de l'utilisation du Système.Net.HttpStatusCode Enum pour obtenir les codes d'état. Par exemple: (int)HttpStatusCode.Interdit
OriginalL'auteur user3110409
J'ai eu exactement le même problème que vous aviez quand j'ai écrit mon propre AuthorizeAttribute. Les messages d'erreur personnalisés page 403 de ne pas s'afficher quand j'ai ajouté "customErrors" balise web.config.
C'est comment je l'ai résolu:
Affecté à une route que je voudrais afficher à filterContext.Résultat, au lieu d'affecter 403 HttpStatusCode.
OriginalL'auteur Amna Ali
Ou vous pouvez effectuer cette solution alternative,au lieu d'utiliser :
vous pouvez le modifier :
Et remplacer la méthode OnException(ExceptionContext filterContext) dans votre Contrôleur/BaseController
OriginalL'auteur Rivera
Comment gérer 401 (non autorisé), 403 (Interdit) et 500 (Erreur Interne du Serveur) dans mvc. Pour ajax/non-appels ajax et sous aspx formes d'authentification.
Il peut être modifié pour gérer les différentes les exceptions non traitées de manière différente et réagit différemment si la demande est ajax ou pas. L'authentification permet de contourner n'importe quel web mvc formes rediriger à la page d'identification et, au lieu de retourner 401 non autorisé - alors votre côté client js cadre peut réagir à l'état http 401/403 plus facilement.
Web.config:
Voie supplémentaire pour l'api de service web demandes: (mettre au-dessus régulier mvc route)
Échantillon côté client code jquery pour gérer l'erreur:
Sinon, vous pouvez faire toutes auth passer par ApplicationHandleErrorAttribute, et de se débarrasser de ce site web.config refuser à des utilisateurs="?". Mais j'ai un héritage page aspx qui n'ont pas accès à la mvc de filtrage donc, je veux que refuser aux utilisateurs="?".
OriginalL'auteur Curtis Yallop
Il me semble que le HttpStatusCodeResult(403) est dans le tort, si la branche. À mon avis, le code devrait ressembler à ceci:
OriginalL'auteur hydr