J'ai un projet ASP.NET MVC, et j'aimerais avoir un LoginUrl différent pour différentes zones du site. Selon la zone du site, différents types d'informations d'identification sont entrés.LoginUrl différent pour différentes URL avec ASP.NET MVC et l'authentification par formulaires
http://host.com/widget/home
doit rediriger l'utilisateur vers http://host.com/widget/logon
.
http://host.com/admin/home
doit rediriger l'utilisateur vers http://host.com/admin/logon
.
Jusqu'à présent, la meilleure solution que je suis venu avec, est d'avoir les formes Auth loginUrl = "~/compte/Ouverture de session" dans le web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
Dans le contrôleur pour le compte:
public ActionResult LogOn()
{
//redirect depending on the returnUrl?
string returnUrl = ControllerContext.Controller.ValueProvider["ReturnUrl"].AttemptedValue;
if (returnUrl.StartsWith("/widget"))
{
return Redirect(string.Format("/widget/Logon?ReturnUrl={0}", returnUrl));
}
if (returnUrl.StartsWith("/admin"))
{
return Redirect(string.Format("/admin/Logon?ReturnUrl={0}", returnUrl));
}
return View();
}
Existe-t-il une meilleure façon de procéder?
BTW: vous pouvez simplement mettre returnUrl comme un paramètre de chaîne à la méthode: LogOn (string returnUrl) –