similaires aux solutions proposées par @hellangle et @Andreas, j'ai utilisé le code suivant pour résoudre ce problème:
public class CustomizedAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var userAuthInfo = GetUserAuthInfo();
if (!userAuthInfo.IsAuthenticated())
{
filterContext.Result = new RedirectResult(UrlToYourLoginPage);
return;
}
if (!userAuthInfo.IsAuthorized())
{
var result = new ViewResult {ViewName = "UnAuthorized"};
result.ViewBag.Message = "Sorry! You are not authorized to do this!";
filterContext.Result = result;
}
}
}
Bien sûr, vous devez implémenter la classe d'informations d'autorisation d'utilisateur et méthodes connexes (GetUserAuthInfo, IsAuthenticated, IsAuthorized) en fonction de vos besoins spécifiques. De plus, une vue nommée 'UnAuthorized' doit être placée dans un endroit que le moteur MVC peut trouver. Ensuite, il peut être utilisé sur une classe de contrôleur (indiqué dans la réponse de @ hellangle) ou une méthode d'action:
[CustomizedAuthorizeAttribute]
public class TargetController : Controller
{
[CustomizedAuthorizeAttribute]
public ActionResult TargetAction()
{
// Your Code
}
}
Afin de fournir une stratégie différente de contrôle d'accès pour les différentes classes de contrôleur et méthodes d'action, met en œuvre un constructeur pour CustomizedAuthorizeAttribute classe qui accepte les paramètres représentant les informations de contrôle d'accès, puis instancie la classe CustomizedAuthorizeAttribute en conséquence.
haha "aucuns droits mec" page ... lol –