У меня есть проект ASP.NET MVC, и я хотел бы иметь другой LoginUrl для разных областей веб-сайта. В зависимости от области сайта вводятся различные типы учетных данных.
http://host.com/widget/home
должен перенаправить пользователя на http://host.com/widget/logon
.
http://host.com/admin/home
должен перенаправить пользователя на http://host.com/admin/logon
.
До сих пор лучшее решение, с которым я столкнулся, состоит в том, чтобы в файле web.config были созданы формы Auth loginUrl = "~/Account/Logon":
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
В контроллере для учетной записи:
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();
}
Есть ли лучший способ сделать это?