Comment puis-je afficher une page d'erreur personnalisée pour un résultat Http 401?
J'ai un contrôleur avec un Autoriser attribut comme ceci:
[Authorize(Roles = "Viewer")]
public class HomeController : Controller
{
//...
}
et de mon site web.config a customErrors définie comme suit:
<customErrors mode="On">
<error statusCode="401" redirect="notauthorized.html"/>
</customErrors>
Lorsque j'essaie d'appeler une action sur le contrôleur de la Maison à l'aide d'un non-autorisé rôle, j'ai juste une page blanche. Je ne suis pas redirigé vers la page personnalisée.
Des idées?
source d'informationauteur Marco M.
Vous devez vous connecter pour publier un commentaire.
J'apprécie cette question est un peu vieux, mais cela peut aider quelqu'un.
Pour un 401, vous aurez probablement voir le standard 401 non autorisé page, même si vous avez ajouté 401 à la section customerrors dans votre site web.config. J'ai lu que lors de l'utilisation de IIS et Windows, l'Authentification, la vérification arrive avant ASP.NET même voit la demande, donc vous consultez la page blanche sur Cassini et sur IIS c'est propre 401.
Pour mon projet, j'ai édité le Mondial.asax fichier pour rediriger vers une route que j'avais créé pour les erreurs 401, l'envoi à l'utilisateur pour le "non autorisé à voir ce" point de vue.
Dans le monde.asax:
et de l'Itinéraire.config:
et dans le contrôleur:
Prendre un coup d'oeil à tvanfosson's Réponse de cette question très semblablec'est Ce que je suis en train de faire(Grâce à tvanfosson), alors maintenant, j'ai juste à dire:
Si l'utilisateur n'est pas dans le rôle, ils vont obtenir ce vue spécifiée par ViewName.
Remarque: la page blanche est à venir à partir de Cassini, si vous déplacez l'application à un serveur IIS, vous verrez la 401.
Une approche standard pour autant que je sais, c'est avoir une simple erreur de contrôleur qui gère les demandes entrantes et les sorties de la vue appropriée en fonction httpstatus code a été renvoyé... quelque chose comme ceci:
puis spécifiez une action de redirection dans votre webconfig:
Aussi, vous pouvez créer votre propre personnalisé autorisation attribut et de définir votre propre itinéraire pour rediriger les utilisateurs sur votre page.
Voici un exemple sur mon projet:
et vous ajoutez votre "drapeau" dans votre contrôleur d'action comme ce