J'ai une application MVC 2 sur laquelle chaque page nécessite une autorisation (sauf pour/Account/Logon), mais je préférerais qu'elle redirige vers "/ Compte/LogOn? ReturnUrl =/SomePage" pour authentifier l'utilisateur, qu'il afficherait simplement le formulaire de connexion à la place sur la page demandée par l'utilisateur afin que l'URL ne change pasRenvoyer la vue de connexion au lieu de la rediriger dans une application MVC 2 (site)
J'ai déjà un BaseController presque tous les autre contrôleur hérite que je l'utilise à d'autres fins où je suis en train de mettre déjà mon AuthorizeAttribute (modifié par souci de concision):
[Authorize(Roles = "Role1, Role2")]
public class BaseController : Controller
{
}
Ma première pensée pour une solution habile serait de passer outre la classe AuthorizeAttribute d'une manière qui ressemblerait à quelque chose comme ceci:
public class AuthorizeWithLoginAttribute : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//This doesn't work obviously
filterContext.Result = View("Logon");
}
}
alors je pourrais simplement changer mon contrôleur ci-dessus pour:
[AuthorizeWithLogin(Roles = "Role1, Role2")]
public class BaseController : Controller
{
}
Est il y a un moyen de faire ce travail? (Ceci est mon premier post FYI)
vous voulez dire, au lieu de rediriger vers '/ Account/LogOn? ReturnUrl =/SomePage' vous voulez qu'il soit redirigé vers/Account/Logon pour l'autentication? –
Je veux éviter complètement la redirection. Donc, si je visite www.monsite.com et que je dois être authentifié, alors il me montrera simplement un formulaire de connexion, pas de redirection vers/Compte/Connexion du tout ... en gros, montrez-moi la vue Connexion au lieu de la Vue d'index (le problème étant que la vue de connexion est sur un contrôleur différent) –