如何解决区域特定的登录页面
| 在我的MVC 3 .net应用程序中,我有两个区域,一个区域称为Admin,另一个区域称为Student。我使用内置的成员资格系统进行用户身份验证,并且这两个区域之间是统一的。问题是,我要使用区域特定的登录页面,因为这两个区域在设计上有很大不同(学生针对移动设备)。据我所知,我只能在Web.config中为应用程序指定一个登录页面,如下所示:<authentication mode=\"Forms\">
<forms loginUrl=\"~/Admin/Account/logon\" timeout=\"2880\" />
</authentication>`
在这种情况下,如何为同一个会员系统实现几个登录页面?
解决方法
您只能为ASP.NET应用程序指定1个登录URL,因此您需要执行以下变通方法:
在每个Araa中,在应用程序的根目录中都有一个Login控制器以及一个主Login控制器。
在Web.Config中,确保您具有:
<configuration>
<location path=\"/Admin/Account/LogOn\">
<system.web>
<authorization>
<allow users=\"?\"/>
</authorization>
</system.web>
</location>
<location path=\"/Student/Account/LogOn\">
<system.web>
<authorization>
<allow users=\"?\"/>
</authorization>
</system.web>
</location>
</configuration>
在您的Web.Config中,配置表单身份验证以在根应用程序中使用Login控制器:
<forms loginUrl=\"~/LogOn\" timeout=\"2880\" />
然后在root登录控制器中,执行默认操作中的以下操作:
//
// GET: /LogOn
public ActionResult Index(string returnUrl)
{
var area = returnUrl.TrimStart(\'/\').Split(\'/\').FirstOrDefault();
if (!string.IsNullOrEmpty(area))
return RedirectToAction(\"LogOn\",\"Account\",new { area });
// TODO: Handle what happens if no area was accessed.
}
,您应该阅读此白皮书。在那里描述了您问题的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。