Usando autenticação de formulários para logon e use HttpContext.Current.User.Identity
Eu criei um site com uma página que inclui uma forma de barbear. O usuário pode fazer login neste formulário e redirecionar para uma página diferente. O logon (e logoff) funciona com autenticação de formulários com êxito. No entanto, parece que não consigo usar HttpContext.Current.User.Identity.Name para recuperar o nome de usuário armazenado (no cookie de autenticação de formulários). Retorna uma string vazia "".
Estou usando o MVC 5 e o ASP 4.5 sem provedores de associação ou função padrão.
Conecte-se:
[HttpPost]
public ActionResult Login(User user)
{
if (ModelState.IsValid)
{
bool authenticated = userscontroller.isAuthorized(user.Email, user.Password);
if (authenticated)
{
if (userscontroller.isAuthenticated())
{
userscontroller.deAuthenticateUser();
}
userscontroller.authenticateUser(user);
return Redirect(Url.Action("Index", "Home"));
}
}
}
Autenticando o usuário:
public void authenticateUser(User user)
{
FormsAuthentication.SetAuthCookie(user.Username, false);
}
Em seguida, obtendo o nome do usuário:
public User userFromCookie()
{
if (isAuthenticated())
{
return getUserByUsername(HttpContext.Current.User.Identity.Name);
}
else { return null; }
}
isauthenticated ()
public bool isAuthenticated()
{
if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
{
return true;
}
else
{
return false;
}
}
Webconfig:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<authorization > <deny users="?"/> </authorization>
Portanto, o identity.name retorna "".
Ajuda é apreciada!