我的网站会有一些工具/子网站可供人们做不同的事情。我有一个常用的Login UserControl将被使用,所以我并没有真正重复。但是这些子站点中的每一个都有自己的MasterPage,因此具有样式。数据库中只有一个用户表,并且您可以访问哪个子站点的角色。 Login UserControl将处理该问题。
这是一个简化的文件夹结构:
\根
- >图像
- >脚本
- >样式
- > POHR
------>的Login.aspx
------> PORHMasterPage
- >啤酒
------>的Login.aspx
------> BeerMasterPage
- >的StatusUpdates
------>的Login.aspx
------> StatusUpdatesMasterPage
每个登录页面都使用相同的登录用户控件来验证人员并设置Cookie,如下所示:
public void LogUserIn(string EMailOrName, string Password) {
DS.User u = DS.Common.ValidateUser(EMailOrName, Password);
if (u != null) {
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
u.FirstName + " " + u.LastName,
DateTime.UtcNow,
DateTime.UtcNow.AddMinutes(30),
true,
string.Format("UserID={0}|SiteID={1}", u.ID, SiteID)
);
string eTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, eTicket);
Response.Cookies.Add(cookie);
string redirectUrl = FormsAuthentication.GetRedirectUrl(EMailOrName, true);
Response.Redirect(redirectUrl);
} // if they got authenticated
} // LogUserIn - Method
我的问题是FormsAuthentication.GetRedirectUrl。它正在返回/default.aspx。我尝试将以下内容添加到Web.config
<location path="~/StatusUpdates">
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/StatusUpdates/Login.aspx" defaultUrl="~/StatusUpdates/Dashboard.aspx" timeout="30" slidingExpiration="false" name="MGG_StatusUpdates" />
</authentication>
</system.web>
</location>
<location path="~/Beer">
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Beer/Login.aspx" defaultUrl="~/Beer/Dashboard.aspx" timeout="30" slidingExpiration="false" name="MGG_Beer" />
</authentication>
</system.web>
</location>
我希望页面能够根据我在应用程序中的位置传回上述defaultUrl值。
我的问题是......我怎样才能做到我想做的事情?我是否需要每个文件夹中的Web.config文件,如果是这样,它们应该保留什么以及root的web.config文件应该包含什么。