A nossa é uma aplicação MVC4. Somos autenticação OAuth & Forms para permitir o login com o google, facebook e twitter.
Pela primeira vez quando eu faço login usando o google .. Sou redirecionado para a página do google e forneci credenciais para que ele faça login, tudo bem.
Após o logout e o login novamente, eu consigo entrar automaticamente. Acho que os cookies no navegador não foram limpos, embora eu os tenha apagado no logoff.
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);
}
Após o logoff, devo ser redirecionado para a página do google novamente ao fazer login novamente. mas isso não está acontecendo. alguém aconselha?
mesmo tipo de pergunta aqui: Sessão ASPXAUTH invalidada no logout com OAUTH
mas sem resposta !!
Respostas:
2 para resposta № 1À primeira vista, não parece haver nenhumproblema na sua pergunta descrita. Sua solução parece estar funcionando bem. Parece-me que você não está entendendo como o OAuth, FormsAuthenticate, Sessions e Cookies se encaixam completamente. Por uma questão de simplicidade, descreverei o fluxo do processo que você descreveu e explicarei cada um deles ...
O cenário é que você NÃO está logado no seu site nem na sua conta do Google.
- Você navega para a página de login do seu site
- Clique no botão "Fazer login com o Google": isso o redireciona para a caixa de diálogo de login da Conta do Google, para que você não esteja mais no seu site ... agora está batendo na porta do Google
- Você fez login com sucesso no Google: o Google emitirá um cookie (apenas para os serviços do Google)
Até o momento, seu navegador possui um cookie ... o do Google
4.Você é redirecionado de volta ao seu site: seu site notou um token de acesso (não cookie) emitido pelo Google e, em seguida, seu site emitirá seu próprio cookie que não tem nada a ver com o do Google
Até esse momento, você efetuou login no Google e no seu site, o que significa que o seu navegador possui 2 cookies válidos (Google e site)
5)Posteriormente, você sair do seu site: Esta ação destrói qualquer sessão relacionada ao SEU site (incluindo o cookie do seu site). Observe que o cookie do Google ainda é válido; de fato, se você acessar seu serviço do Gmail, YouTube ou qualquer outro serviço do Google, ignorará perfeitamente a autenticação porque não saiu do Google ... SOMENTE no seu site .
6Então você decide fazer login novamente no seu site clicando no botão "Login with Google": Esta ação o levará ao Google, mas, porque o Google detecta que você já está autenticado (logado), não precisa voltar autenticá-lo, ele já sabe quem você é e não solicita a caixa de diálogo de login. Em vez disso, ele o redireciona de volta ao seu site, emitindo um novo token de acesso.
Basicamente, você não precisa fazer login novamente no Google se já estiver logado
Espero que faça sentido