.NET MVC 5: потеря cookie между запросами - PullRequest
0 голосов
/ 17 февраля 2019

Я реализовал пользовательскую аутентификацию, но не могу получить файл cookie для аутентификации после успешного входа в систему.

Настройка файла cookie:

HttpContext.Current.User = user;
Thread.CurrentPrincipal = user;
string userData = JsonConvert.SerializeObject(user);
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, user.Handle, DateTime.Now, DateTime.Now.AddMinutes(15), false, userData);
string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
HttpContext.Current.Response.Cookies.Add(faCookie);

Получение файла cookie:

HttpCookie authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
    user = JsonConvert.DeserializeObject<User>(authTicket.UserData);
}

Проблема в том, что HttpContext.Current.Request.Cookies не содержит ключ FormsAuthentication.FormsCookieName, а authTicket всегда равен нулю.

1 Ответ

0 голосов
/ 18 февраля 2019

Может быть, ваш файл cookie истек сразу. Пожалуйста, проверьте время истечения с помощью плагина editthiscookie. Вы можете использовать set cookie с помощью этой функции.

 public static bool SetCookie(string cookieName, object value, int expires)
    {
        try
        {
            HttpCookie cookie_clc = new HttpCookie(cookieName, value.ToString());
            cookie_clc.Expires = DateTime.Now.AddMinutes(expires);
            HttpContext.Current.Response.Cookies.Add(cookie_clc);
            return true;
        }
        catch (Exception)
        {
            return false;
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...