两个不同文件夹ASP.NET中的唯一表单身份验证

时间:2011-11-15 18:27:42

标签: asp.net forms-authentication

在我的网络应用中,用户可以访问两个区域,普通用户可以使用一个普通区域,管理员用户可以使用一个区域。

正则:

http://www.myapp.com/Home.aspx

管理:

http://www.myapp.com/admin/Home.aspx

管理区域中的一项功能是您可以在文本框中输入任何用户名并代表“常规”用户登录。所以这是我的问题:

  1. 管理员用户以“admin@yahoo.com”身份登录。
  2. 管理员然后代表“regularuser@yahoo.com”
  3. 登录
  4. 现在管理员转到/ admin文件夹中的另一个页面,但是现在使用Forms Auth而不是它们将它们作为“regularuser@yahoo.com”重新识别
  5. 这是我的问题:

    有没有办法为“/ admin”文件夹提供完全不同的表单身份验证条目?如果我对该文件夹中的某人进行身份验证,它是否可以使用与常规应用程序不同的Forms Auth cookie?它是否也可以为常规管理员提供不同的登录网址?

1 个答案:

答案 0 :(得分:0)

嗯,有趣。 Asp.net会员提供商不会支持这种开箱即用。 如果我理解正确,你想要的是允许'adminuser'使用该网站作为'regularuser'来保持他的管理员权限(角色)。  如果是这种情况,我会为admin创建一个特殊的登录页面,这需要以下信息:  管理员用户名 ,管理员密码 ,用户名模仿 。 执行以下操作:

  1. 验证管理员用户( MembershipProvider.ValidateUser
  2. 如果凭据有效,请以“regularuser”身份登录( FormsAuthentication.SetAuthCookie
  3. 将'regularuser'添加到管理员角色( Roles.AddUserToRole
  4. 将“regularuser” MembershipUser.IsApproved 状态设置为false。这可以防止真正的“常规用户”登录并获得管理员权限。
  5. 提供特殊的退出页面:

    • 撤销管理员角色: Roles.RemoveUserFromRole
    • 重置常规用户
    • 的'IsApproved ='true'
    • 退出( FormsAuthentication.SignOut ())
    祝你好运。让我知道它是怎么回事!