【问题标题】:ASP.NET Membership - Two providers on siteASP.NET 成员资格 - 现场有两个提供商
【发布时间】:2010-08-11 11:41:17
【问题描述】:

我们的站点有两个 ASP.NET 成员提供程序。内置的和自定义的(SqlMembershipProvider.

我可以同时登录两者,但我不需要同时登录。

我遇到的问题如下:

用户“person_a@site.com”登录到内置提供程序。然后他们导航到我们需要自定义提供程序的网站部分。

在此页面上,我可以检查他们是否已通过身份验证,并获取他们的用户名。然后,我可以从自定义提供程序 GetUser 方法中获取 MembershipUser 对象。 (HttpContext.Current.User.Identity.Name)

用户名“person_a@site.com”也可能存在于自定义提供程序的用户中。

但是,我不希望他们在这里登录,因为他们没有针对自定义提供程序进行身份验证。

那么,是否可以检查 HttpContext.Current.User 是从哪个提供程序生成的。

希望这一切都有意义!

【问题讨论】:

  • 嗨 Danny,自定义提供程序提供了哪些 MS 没有提供的服务?您是否考虑过使用角色来控制对网站不同部分的访问?
  • 这是一个使用 Umbraco 的解决方案,因此使用内置的解决方案。需要自定义一个来验证数据库表。用户可以登录到两个不同的区域,并且这些登录不是共享的。我的一个想法是在用户登录每个区域时设置一个 Session 变量,即当他们登录到成员区域时设置一个 Session[“isMember”],当他们登录到其他地方时设置一个 Session[“isDef”]。然后,我可以在对用户进行身份验证时检查此会话变量。

标签: asp.net asp.net-membership


【解决方案1】:

是的,如果您注意到 RolePrincipal 上有一个名为 ProviderName 的属性。

通常,当人们推出自己的提供者时,他们会忽略此字段的使用。

在您的情况下,只需修改您的自定义提供程序以标识自己(如果还没有),并检查用户的该属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多