我有一个ASP.NET MVC项目,我想为网站的不同区域有不同的LoginUrl。根据网站的区域,输入不同类型的凭证。不同的URL与ASP.NET MVC和表单身份验证不同的LoginUrl
http://host.com/widget/home
应该将用户重定向到http://host.com/widget/logon
。
http://host.com/admin/home
应该将用户重定向到http://host.com/admin/logon
。
到目前为止,最好的解决方案,我想出了,是有窗体身份验证loginUrl =“〜/帐号/登录”,在web.config中:
<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();
}
有没有更好的方法来做到这一点?
顺便说一句:你可以把returnUrl作为字符串参数传递给该方法:LogOn(string returnUrl) – 2011-01-11 01:16:04