L'un des filtres d'une application que je développe vérifie si un utilisateur possède l'élément qu'il essaie de modifier. L'action est décorée par l'attribut [RequiresOwnership]
, et à l'intérieur de la logique d'attribut, je vérifie pour voir si l'utilisateur possède l'élément, et si ce n'est pas le cas, je lance un UnauthorizedAccessException
.Comment faire pour attraper une exception lancée par un filtre dans le MVC de .NET?
Ma question est la suivante: où puis-je attraper cette exception? Idéalement, j'aimerais rediriger l'utilisateur vers une page expliquant pourquoi ce qu'il a essayé de faire n'était pas autorisé, au lieu de simplement afficher une page d'exception. Je ne pense pas que j'attraperais l'exception dans l'action qui est décorée par l'attribut, donc y a-t-il une partie de base de l'application où je peux manipuler les exceptions levées plus haut, dans le modèle .NET MVC?
EDIT: Je me rends compte que je pourrais juste rediriger vers une page via le filtre lui-même, mais cela me semble un peu hacky. Ce serait bien de lancer des exceptions via des attributs, et d'avoir un endroit standard où ils peuvent être attrapés et traités.
* "il n'y a pas d'endroit utile pour attraper les exceptions des attributs." * Quel est le problème avec la réponse de @ GalacticCowboy? – seebiscuit