J'utilise des attributs de routage (MVC) pour appeler contrôleur Méthodes et aussi un Authorizationattribute avec des propriétés personnalisées:Utiliser l'attribut des paramètres de routage pour d'autres attributs
[Route("{id:int}")]
[UserAuth(ProjectId=3)]
public ActionResult Select(int id) {
return JsonGet(Magic.DoSomethingMagic());
}
UserAuth est un simple AuthorizationAttribute:
public class UserAuthAttribute:AuthorizeAttribute {
public int ProjectId { get;set;}
protected override bool AuthorizeCore(HttpContextBase contextBase) {
var currentProject=new Project(ProjectId);
return currentProject.UserIsMember()
}
}
Maintenant, je veux utiliser ceci avec un paramètre pour le projectId. Le code suivant ne fonctionne pas mais devrait montrer ce que je veux réaliser (je ne peux pas ajouter l'id)
[Route("{id:int}")]
[UserAuth(ProjectId=id)]
public ActionResult Select(int id) {
return JsonGet(Magic.DoSomethingMagic());
}
Ne transmettez pas l'ID à 'UserAuth'. Plutôt l'obtenir de l'objet 'Request'. Si vous voulez que la flexibilité soit de passer ou non l'identifiant à 'UserAuth', alors vous pouvez rendre le param nullable et si c'est null, alors vous le cherchez dans' Request'. –