2014-02-13 3 views
0

Ours - это приложение MVC4. Мы OAuth & Formsauthentication, чтобы разрешить вход с помощью google, facebook & twitter.OAuthWebSecurity Forms Аутентификация не является сеансом очистки mvc4

Впервые при входе в систему с помощью google .. Я перенаправлен на страницу google, и я предоставил учетные данные, в которые он записывает меня, вот и все нормально.

После выхода из системы и повторного входа я могу войти в систему автоматически. Я думаю, что файлы cookie в браузере не очищаются, хотя я удалил их при выходе из системы.

public ActionResult LogOff() 
    { 
     //Clears out Session 
     Response.Cookies.Clear(); 

     //Signs out of WebSecurity and FormsAuthentication 
     WebSecurity.Logout(); 
     FormsAuthentication.SignOut(); 

     // clear authentication cookie 
     HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, ""); 
     cookie1.Expires = DateTime.Now.AddYears(-1); 
     Response.Cookies.Add(cookie1); 

     Session.Clear(); 
     Session.Abandon(); 

     return RedirectToAction(AXN_DFLT, CNTLR_DFLT); 
    } 

После выхода из системы я должен быть перенаправлен на страницу google снова при повторном входе в систему. , но этого не происходит. кто-нибудь советует?

же рода вопрос здесь: ASPXAUTH Session invalidate on logout with OAUTH

, но нет ответа !!

ответ

2

На первый взгляд, в вашем описанном вопросе не возникает никаких проблем. Ваше решение работает нормально. Мне кажется, что вы не понимаете, как OAuth, FormsAuthenticate, Sessions и Cookies полностью соответствуют. Для простоты я опишу описанный процесс и объясню каждый из них ...

Сценарий заключается в том, что вы не вошли ни на свой сайт, ни на свою учетную запись google.

  1. Вы просматриваете свой веб-сайт страницу входа
  2. Нажмите на кнопку «Вход с Google»: Это перенаправляет вас на диалоге входа в аккаунт Google, так что вы не на своем сайте больше ... Вы» повторно в настоящее время стучит в дверь от Google
  3. Вы успешно войти в систему с помощью Google: Google выпустит печенье (для служб Google, только)

до этого момента, ваш браузер имеет одно печенье ... Google, один

4. Вы перенаправлены обратно на свой сайт: ваш сайт заметил маркер доступа (не cookie), выпущенный Google, а затем ваш веб-сайт выпустит свой собственный файл cookie, который не имеет ничего общего с одним Google

До этого момента, ваш браузер владеет 2 действительными файлами cookie (Google и ваш сайт)

5.Later on, вы выходите из своего веб-сайта: Это действие уничтожает любую сессию, связанную с ВАШЕМ веб-сайтом (включая cookie для вашего сайта). Обратите внимание, что cookie Google по-прежнему действует, по сути, если вы перейдете на свой gmail, youtube или любой другой сервис Google, вы отлично обойдете аутентификацию, потому что вы не вышли из Google ... ТОЛЬКО с вашего сайта.

6. После того, как вы решите вернуться на свой сайт, нажмите кнопку «Войти с помощью Google»: это действие приведет вас к Google, но, поскольку Google обнаруживает, что вы уже прошли аутентификацию (вход в систему), это не вам необходимо повторно аутентифицировать вас, он уже знает, кто вы и не запрашивает диалоговое окно входа, вместо этого он перенаправляет вас обратно на ваш сайт, выдавая новый токен доступа.

В принципе, вы не обязаны войти в систему с помощью Google еще раз, если вы уже вошли в систему

Надеюсь, что это имеет смысл

+0

Спасибо !! Я понимаю this.But, что если я хочу, чтобы войти в систему с другой учетной записи Google , должен ли я всегда вручную очищать историю браузера и что кажется неправильным? LogOff должен очистить все сеансы is'nt it? – mmssaann

+0

Если вы хотите войти в систему с другой учетной записью Google, спросите себя, что бы вы сделали, если вы поедете в GMail и хотите войти в систему с другой учетной записью? Сначала нужно выйти, не так ли? Это то же самое, что вы здесь делаете. Я все еще не думаю, что вы понимаете, как работают cookie. Вам придется выйти из Google, потому что вы вошли в систему с Google. – Leo

+0

Хорошо, мои пользователи, которые регистрируются на сайте с помощью google или twitter, если они хотят завершить выход из системы, должны ли они идти в Google и выходить из системы всегда? – mmssaann

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