Tengo un proyecto ASP.NET MVC, y me gustaría tener un LoginUrl diferente para diferentes áreas del sitio web. Dependiendo del área del sitio, se ingresan diferentes tipos de credenciales.Diferentes LoginUrl para diferentes URL con ASP.NET MVC y Autenticación de formularios
http://host.com/widget/home
debe redirigir al usuario a http://host.com/widget/logon
.
http://host.com/admin/home
debe redirigir al usuario a http://host.com/admin/logon
.
Hasta el momento, la mejor solución que he llegado con, es tener las formas de autenticación loginUrl = "~/cuenta/Inicio de sesión" en el web.config:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
En el controlador de la cuenta:
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();
}
¿Hay una manera mejor de hacer esto?
BTW: puede simplemente poner returnUrl como un parámetro de cadena para el método: LogOn (string returnUrl) –