2014-12-01 1 views
2

Как я могу войти в систему с другой учетной записью на вкладку asp.net mvc 5 и Identity?Заседание за вкладку с asp.net mvc и Identity

Есть ли конфигурация, которая не использует файлы cookie?

Это мой код конфигурации:

' Enable the application to use a cookie to store information for the signed in user 
    app.UseCookieAuthentication(New CookieAuthenticationOptions() With {.AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, .LoginPath = New PathString("/Account/Login") _ 
     }) 
    ' Use a cookie to temporarily store information about a user logging in with a third party login provider 
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie) 
+0

Я думаю, вы забыли вспомнить, что Интернет по своей природе не имеет гражданства и не имеет представления о вкладах. Почему вы хотите иметь отдельный сеанс за вкладку? – mason

+0

Ну. Мне нужна функциональность, похожая на gmail «Войти с другой учетной записью». Возможно ли реализовать что-то подобное? – jgarciad

+1

Уверен, что это возможно. Очевидно, Gmail это сделал. Но это не создает другую сессию. – mason

ответ

4

Это не представляется возможным. Сеть не имеет гражданства: каждый запрос представляет собой уникальную снежинку, не затрагиваемую каким-либо другим запросом, сделанным до или после. Однако, поскольку логически какое-то состояние должно существовать для таких вещей, как аутентификация, сеансы были созданы, чтобы в основном подделывать чувство государства.

Для работы сеансы имеют серверный и клиентский компоненты. На сервере используется некоторый уровень персистентности для хранения связанных с пользователем данных, привязанных к токену, который однозначно идентифицирует конкретный сеанс. На клиенте cookie устанавливается с этим маркером. Когда клиент делает другой запрос, все куки-файлы, принадлежащие определенному домену в игре, отправляются вместе с запросом обратно на сервер, который содержит файл cookie с токеном сеанса, если он существует. Как только сервер увидит этот файл cookie в запросе, он использует токен для поиска сеанса с уровня персистентности и восстановления состояния, которое пользователь использовал во время предыдущего запроса.

Дело в том, что этот процесс немой. Клиент слепо отправляет любые файлы cookie, которые сервер устанавливает на сервер с каждым запросом. И, если сервер получает куки-файл с маркером сеанса, который он распознает, он слепо восстанавливает состояние. Нет никакого мнения о том, сколько вкладок в игре или даже содержание содержимого файла cookie (клиент не знает и не заботится о том, чтобы cookie использовался для управления сеансом, проверки подлинности и т. Д.).

Длинный и короткий, вы ничего не можете сделать, чтобы заставить сеанс за вкладку или окно. На стороне клиента вы можете открыть другой браузер (в котором не было бы cookie, содержащего токен сеанса) или использовать что-то вроде режима инкогнито Chrome (который создает изолированный просмотр в браузере без каких-либо ранее установленных файлов cookie). Тем не менее, это выбор, который делает пользователь, а не веб-сайт.

Смежные вопросы