0

我的 ASP.NET Web 应用程序项目中有两个文件夹“Admin”和“User”文件夹。在Admin文件夹下有一个“Admin.aspx”页面,在User文件夹下有一个“User.aspx”页面。我在 Account 文件夹下还有另一个名为“Login.aspx”的页面。对于这个登录页面,我使用了工具箱中的内置登录控件。根据字段中给出的 ID 和密码,必须调用相应的网页。例如,当我输入用户名“admin”和密码“password” (基本上是管理员用户)时,它应该加载 Admin.aspx 页面。另一方面,当用户名是“mike”,密码是“mike123”时(基本上是普通用户),应用程序应该加载 User.aspx 页面。我已经使用“ASP.NET 配置”向导为“Admin”和“User”文件夹创建了所需的访问规则。我的问题是根据输入的 id 和密码映射相应的 aspx 页面。

4

2 回答 2

1

您的问题有点含糊,我假设您使用的是标准的 SqlMembership 提供程序和表单身份验证。

使用网站管理工具来管理您的登录提供了身份验证机制。我建议配置和使用用户角色来定义对网站功能的访问。

根据角色重定向到特定页面如下所示: 处理 Login 控件的 LoggedIn 事件。

protected void LoginControl_LoggedIn(object sender, EventArgs e)
{
    try
    {

       if (HttpContext.Current.User.IsInRole("Site Admin"))
       {
          Response.Redirect("~/Admin/Admin.aspx");
       }
       else if  (HttpContext.Current.User.IsInRole("User")) 
       {
          Response.Redirect("~/User/User.aspx");
       }
    catch (Exception ex)
    {
       Debug.WriteLine("Exception in d: " + ex.Message);
       throw;
    }
}

您还需要通过 web.config 提供对站点安全部分之外的 Login.aspx 页面的访问权限。

<authentication mode="Forms">
  <forms name="MyApplication" loginUrl="~/Account/Login.aspx" timeout="60">
  </forms>
</authentication>

这只是您可以实施的众多解决方案之一。网上有很多资源可以帮助您实现这一目标。

于 2012-05-11T23:55:57.657 回答
0
protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        String[] users = Roles.GetRolesForUser(Login1.UserName);
        if (users.Contains("admin"))
        {
            Response.Redirect("~/Admin/Admin.aspx");
        }
        else if (users.Contains("users"))
        {
            Response.Redirect("~/Secure/User.aspx");
        }
    }
于 2012-05-11T23:42:30.787 回答