Je ne pense pas que vous pouvez le faire avec l'attribut standard AUTORISER, mais vous pouvez obtenir votre propre attribut de AuthorizeAttribute qui prend une liste d'actions pour permettre et permet l'accès aux seules actions. Vous pouvez consulter la source de AuthorizeAttribute au www.codeplex.com pour obtenir des idées sur la façon de procéder. Si vous avez fait, il pourrait ressembler à:
[AdminAuthorize (Roles = "Administrator", Exempt = "Login, Logout") ]
public class AdminController : Controller
{
public ActionResult Login()
{
return View();
}
public ActionResult Login()
{
return View();
}
... other, restricted actions ...
}
EDIT: Pour votre information, j'ai finalement couru à travers un besoin de faire quelque chose de semblable à moi-même et je suis une autre direction. J'ai créé un fournisseur de filtre d'autorisation par défaut et j'applique un filtre d'autorisation global. Le fournisseur de filtre d'autorisation utilise la réflexion pour vérifier si une action ou un contrôleur a un attribut d'autorisation spécifique appliqué et, dans l'affirmative, s'en remet à lui. Sinon, il applique un filtre d'autorisation par défaut. Ceci est couplé avec un PublicAttribute dérivé de AuthorizeAttribute qui permet un accès public. Maintenant, je reçois un accès sécurisé par défaut, mais peut accorder un accès public via [Public]
appliqué à une action ou un contrôleur. Une autorisation plus spécifique peut également être appliquée si nécessaire. Voir mon blog à http://farm-fresh-code.blogspot.com/2011/04/default-authorization-filter-provider.html
On dirait que vous avez raison selon http://www.codeplex.com/aspnet/SourceControl/changeset/view/17272 Je suppose que l'attribut est appliqué au niveau du contrôleur et ne donne jamais une tentative d'évaluation à l'action. –
Hmm, apparemment, vous ne pouvez pas lier directement au fichier source sur codeplex. –