Использование форм аутентификации для входа в систему и использования HttpContext.Current.User.Identity
Я сделал сайт со страницей, которая включает в себя форму бритвы. Пользователь может войти в эту форму, а затем перенаправляет на другую страницу. Вход (и выход) успешно работает с проверкой подлинности с помощью форм. Однако я не могу использовать HttpContext.Current.User.Identity.Name для извлечения сохраненного имени пользователя (в файле cookie для проверки подлинности форм). Возвращает пустую строку "".
Я использую MVC 5 и ASP 4.5 без стандартного членства или поставщиков ролей.
Авторизоваться:
[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"));
}
}
}
Аутентификация пользователя:
public void authenticateUser(User user)
{
FormsAuthentication.SetAuthCookie(user.Username, false);
}
Затем получить имя пользователя:
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>
Таким образом, identity.name возвращает "".
Помощь приветствуется!