客户成员提供商MVC2和请求中的当前用户

时间:2011-12-14 15:11:05

标签: c# asp.net-mvc-2 asp.net-membership

我为MVC2编写了自定义成员资格提供程序。

我在所有视图和控制器中遇到了一个特定问题,我首先使用以下代码:

CbMembershipProvider cb_prov_ = (CbMembershipProvider)Membership.Provider;

在获取登录用户信息的操作中,我收到的用户信息如下:

cb_prov_.User.user_id_;

但是这段代码的问题是,如果我使用“用户1”登录并同时使用“用户2”并返回“用户1”屏幕,我会看到“用户2”数据,这意味着最后一次登录正在提取用户数据。

然后我在网上搜索,我需要实现提供者的getUser方法。现在我做了那个,当我需要当前用户信息时,在每个控制器的操作中,我正在使用以下调用:

User user= cb_prov_.GetUser(System.Web.HttpContext.Current.User.Identity.Name);

现在,当我测试时问题已经解决了一半,这意味着如果我打开IE浏览器并在第一个标签上我用用户1登录并在第二个标签用户2中返回标签1然后再次用户2信息即将到来

但是如果我在IE中使用用户1登录并且使用chrome登录用户2,那么事情似乎正常。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

IE(与几乎所有浏览器一样)一次只支持一个会话,因此在选项卡1和选项卡2之间只有一个会话,这意味着当您在新选项卡中登录用户2时,用户1的会话将在同一会话中注销。您可以使用隐私浏览模式在IE中进行第二次会话,在FF和Chrome中也是如此(隐身模式)。

在Facebook或任何其他服务中与不同用户一起尝试,您将无法在单个浏览器会话中登录两个不同的帐户。