Заказчик членства клиента MVC2 и текущий пользователь в запросе - PullRequest
1 голос
/ 14 декабря 2011

Я закодировал пользовательский поставщик членства для 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 .

Но если я войду с пользователем 1 в IE, а пользователь 2 с Chrome, все будет работать нормально.

Может кто-нибудь помочь мне с этой проблемой?

1 Ответ

1 голос
/ 14 декабря 2011

IE (как почти во всех браузерах) поддерживает один сеанс за раз, поэтому существует только один сеанс между вкладкой 1 и вкладкой 2, это означает, что при входе пользователя 2 в новую вкладку сеанс пользователя 1 будет отключен, как и в том же сеансе. Вы можете провести второй сеанс в IE, используя режим частного просмотра, то же самое в FF и Chrome (режим инкогнито).

Попробуйте с другими пользователями в Facebook или любой другой службе, вы не сможете войти в две разные учетные записи в одном сеансе браузера.

...