J'utilise avec succès l'autorisation personnalisée dans ASP.NET MVC. Cela implique simplement une comparaison entre User.Identity et le propriétaire de l'objet en contexte.Autorisation et liens hypertexte ASP.NET MVC
Il fonctionne comme un charme lorsqu'il est utilisé dans des conditions simples. Cela devient plus compliqué quand j'essaie d'appeler 2 actions dans une requête web. Je veux dire que je veux afficher une image qui serait générée à la volée par mon application. Cette image est générée par un contrôleur, elle peut donc être référencée par une URL même si elle n'existe pas physiquement. J'ai décidé que l'utilisateur doit être connecté et être le propriétaire pour l'afficher, donc j'applique mon mécanisme d'autorisation.
Exemple: < img src = "http://myapplication.com/images/generate/3"/>
Quand je possède une telle image dans une page via son lien d'action, je pense que l'authentification l'utilisateur sera toujours en contexte du côté serveur lorsque l'image est en cours de génération. Ce n'est pas le cas dans mes tests. L'image ne s'affiche jamais car ma vérification d'autorisation ne fonctionne pas. Dans le contrôleur d'image, User.Identity est vide comme si l'utilisateur ne l'avait pas signé.
En attendant, le même utilisateur est toujours connecté au site Web et peut continuer à naviguer avec son identité en contexte ... sans que ces images fonctionnent correctement.
Je me demande comment faire fonctionner ce processus en toute sécurité ...
Merci beaucoup!
Marc Lacoursiere RooSoft Informatique inc.
Etes-vous sûr que les deux requêtes seront effectuées sur le même thread? – RooSoft
Je ne vois pas pourquoi il y aurait deux threads? D'abord une demande est faite pour rendre la page avec votre balise img à l'intérieur (pas les bits réels de l'image). Ensuite, une fois que le navigateur affiche votre balise img, une demande est faite à votre contrôleur pour obtenir votre image. Dans les deux cas, il n'y a qu'un seul thread actif? – Peter
Je me demande si nous pouvons compter sur ce fait en raison de la nature sans état d'ASP.NET MVC en premier lieu ... En théorie, sur une configuration d'équilibrage de charge, les deux demandes pourraient être faites sur deux serveurs différents, qui implique deux threads différents. – RooSoft