如何在ASP.Net中有多个登录页面样式

时间:2012-03-13 01:00:24

标签: c# asp.net

我的网站会有一些工具/子网站可供人们做不同的事情。我有一个常用的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文件应该包含什么。

0 个答案:

没有答案