Autenticação de formulários:UserData perdido (mas no cookie)
-
15-11-2019 - |
Pergunta
- Asp.Net MVC 3
- Autenticação de Formulários (personalizada)
- iPad MóvelSafari
- iframe (mesmo domínio)
Depois de lutar com formsTicket.UserData
não estou trabalhando com MobileSafari (SOMENTE MoblieSafari), descobri que httpContext.User.Identity.Ticket.UserData
é vazio (no MobileSafari, não nos outros) e o FormsAuthentication original HttpCookie contém o valores certos?!?
Como pode ser?!
Código:
public void UpdateContext()
{
if (httpContext.User.Identity is FormsIdentity)
{
// Get Forms Identity From Current User
FormsIdentity id = (FormsIdentity)httpContext.User.Identity;
// Create a custom Principal Instance and assign to Current User (with caching)
HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(FormsAuthentication.FormsCookieName);
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
var cookieUserData = ticket.UserData; // not empty
var httpContextIdentiyUserData = id.Ticket.UserData; // empty!
...
}
}
Qualquer pista seria útil!
LG
Warappa
PS:Se for importante, utilizo uma página do meu site em um iframe - mesmo domínio.
Solução
Então a questão era a seguinte:
Este erro surgiu quando eu entrei e acessei uma página que fez um history.back()
.
Olhando o tráfego com o Fiddler eu vi que o Asp.Net usava o sem biscoitos modo de autenticação, então a autenticação foi codificado no URL.Agora, quando o history.back()
ocorreu, o URL apontou para o URL de logout com O agora informações de autenticação inválidas...bug desagradável ao meu lado.
Forçar o Asp.Net a usar cookies resolveu o problema!
LG
Warappa