2010-08-11 82 views
1

我们的网站有两个ASP.NET会员供应商。在一个内置,以及一个自定义(SqlMembershipProvider的。ASP.NET会员资格 - 现场提供两名供应商

我能够登录到这两个没有问题,但我没有必要要求有两个在同一时间登录的能力。

的问题我有如下:。

用户“[email protected]”登录到内置的提供商他们然后导航到我们需要自定义提供的网站

的部分在此页面。我可以检查他们是否已通过身份验证,并获取他们的用户名。然后我可以从CustomUserGetUser方法获取MembershipUser对象。 (HttpContext.Current.User.Identity.Name)

用户名“[email protected]”也可能存在于自定义提供程序的用户中(很有可能)。

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

那么,是否有可能检查生成的是哪个proivider HttpContext.Current.User。

希望这一切都有道理!

+0

嗨Danny,自定义提供程序提供的MS不是什么,并且您考虑使用角色来控制对网站不同部分的访问? – Lazarus 2010-08-11 11:47:50

+0

这是一个使用Umbraco的解决方案,所以内置一个用于那里。 需要自定义一个来验证数据库表。 用户有两个截然不同的地方可以登录,而这些登录信息不会共享。 我的一个想法是当用户登录到每个区域时设置会话变量,即当他们登录到成员区时为Session [“isMember”],而当他们登录到其他地方时则为Session [“isDef”]。 我可以检查这个会话变量时,我认证用户。 – Danny 2010-08-11 12:05:02

回答

0

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

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

对于您的情况,只需修改您的自定义提供程序以标识其自身(如果尚未),并检查用户的属性。