C# MVC 5 Файл cookie билета очищается при выходе из формы аутентификации

Мне нужно получить доступ к файлам cookie, чтобы получить имя пользователя и пароль, а затем установить их в текстовых полях представления "Вход в систему", поскольку в этом представлении установлен флажок "Запомнить меня".

Метод LogOff

public ActionResult LogOff()
{
    //Session.Abandon();
    // sign out.
    FormsAuthentication.SignOut();
    return RedirectToAction("Index", "Login");
}

Инициализация сеансов и файлов cookie после успешного входа в систему.

private void InitializeSessionVariables(AgentDTO user)
{
    // SessionModel.AgentId = user.ID;
    Response.Cookies.Clear();
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,user.MobilePhone,DateTime.Now,DateTime.Now.AddDays(30),true,"",FormsAuthentication.FormsCookiePath);
    // Encrypt the ticket.
    string encryptedTicket = FormsAuthentication.Encrypt(ticket);
    // Create the cookie.
    HttpCookie authenticationCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); // Name of auth cookie (it's the name specified in web.config) // Hashed ticket
    authenticationCookie.Expires = DateTime.Now.AddDays(365);
    // Add the cookie to the list for outbound response
    Response.Cookies.Add(authenticationCookie);
}

Действие Результат просмотра имени входа У меня проблема, когда я сначала выхожу из системы, а затем пытаюсь получить доступ к файлу cookie, но он возвращает пустое значение, потому что я запускаю "FormsAuthentication.SignOut ();";

public ActionResult Index(LogonDTO model, string message = null, string reason = null)
{
    if (SessionModel.AgentMobilePhone != null) return RedirectToAction("Index", "Home");
    if (reason != null) message = "Su sessión ha expirado. Vuelva a loguearse.";
    ViewBag.Message = message;

    if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
    {
        HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
        FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
        model.Username = authTicket.Name;
        //model.Password = "in progress..."
    }
    return View(model);
}

1 ответ

Вы можете использовать JavaScript для хранения информации о пользователе, если он установит флажок Запомнить меня

использование

localStorage.setItem("UserName", "Smith");

установить значения

и на странице входа на мероприятии готового документа Jquery напишите код ниже

var UserName = localStorage.getItem("UserName");
if (UserName) $("#username").val(UserName);

Надеюсь, что это решит вашу проблему.

Другие вопросы по тегам