【问题标题】:Unique Forms Authentication in Two Different Folders ASP.NET两个不同文件夹中的唯一表单身份验证 ASP.NET
【发布时间】:2023-03-18 22:25:01
【问题描述】:

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

常规:

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

管理员:

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

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

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

这是我的问题:

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

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    嗯,有趣。 Asp.net 会员提供程序将不支持此开箱即用。 如果我理解正确,您想要的是允许“管理员用户”以“普通用户”的身份使用该站点,以保持他的管理员权限(角色)。 如果是这种情况,我将为管理员创建一个特殊的登录页面,这需要以下信息: 管理员用户名 , 管理员密码 , 要模拟的用户名 . 执行以下操作:

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

    提供专门的登出页面:

    • 撤消管理员角色:Roles.RemoveUserFromRole
    • 为普通用户重置 'IsApproved = 'true'
    • 注销 (FormsAuthentication.SignOut() )

    祝你好运。告诉我进展如何!

    【讨论】:

    • 嗯,这里的难点在于,在主应用程序中,我对所有内容都使用 User.Identity.Name。我的理解是,将在主应用程序中提取“管理员用户名”而不是“要模拟的用户名”
    • 不,不会。您将以普通用户身份登录 -> 但是您将以管理员身份登录。
    • 我以不同的方式解决了这个问题,方法是记录他们是否在会话中登录到我的管理区域。无论他们的实际 User.Identity.Name 是什么,我都会在他们位于管理区域时检查该会话变量。无论如何,谢谢你的回复,我很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多