Comment créer un AuthorizeAtsortingbute personnalisé qui spécifie un message sous la forme d’un paramètre de chaîne, puis le transmet à la page de connexion?
Par exemple, idéalement, ce serait cool de faire ceci:
[Authorize(Message = "Access to the blah blah function requires login. Please login or create an account")] public ActionResult SomeAction() { return View(); }
Ensuite, dans l’action de connexion, je pourrais faire quelque chose comme ceci:
public ActionResult Login(ssortingng message = "") { ViewData.Message = message; return View(); }
Et enfin, dans la vue, je peux le faire:
@if (!Ssortingng.IsNullOrEmpty(ViewData.Message)) {
}
En gros, je souhaite transmettre un message personnalisé à la page de connexion afin d’afficher un message spécifique à ce à quoi l’utilisateur tente d’accéder à ce moment précis.
Vous pouvez essayer quelque chose comme ça:
public class CustomAuthorizeAtsortingbute : AuthorizeAtsortingbute { public ssortingng Message { get; set; } public override void OnAuthorization(AuthorizationContext filterContext) { var result = new ViewResult(); result.ViewName = "Login.cshtml"; //this can be a property you don't have to hard code it result.MasterName = "_Layout.cshtml"; //this can also be a property result.ViewBag.Message = this.Message; filterContext.Result = result; }
Usage:
[CustomAuthorize(Message = "You are not authorized.")] public ActionResult Index() { return View(); }
web.config
Manette:
public ActionResult LogOn() { return View(); } public ActionResult LogOnYouHavenotRight() { return View(); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult LogOn(LogOnModel model, ssortingng returnUrl) { }
Dans les deux vues:
Html.BeginForm("LogOn", "Account" )