Проверка подлинности пользовательских форм ASP не работает, потому что файл cookie потерян
У меня есть веб-сайт ASP .Net 4.5 MVC, где я настроил аутентификацию форм, следуя этому руководству. Разница в том, что я аутентифицируюсь через бэкэнд-dll, поэтому я пропустил все компоненты базы данных в учебнике, и там, где учебник выбирает пользователя из базы данных, я получаю его из обычного вызова метода. Я уже следовал этому руководству и успешно внедрил его на новом веб-сайте MVC. На этот раз я реализовал его на существующем веб-сайте MVC и не могу заставить его работать.
Когда файл cookie добавлен в Response.Cookies
он существует только до тех пор, пока код не вернет View пользователю. После этого он больше не существует в Response.Cookies
а это значит что в Global.asax Application_PostAuthenticateRequest
метод, var authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
всегда возвращается null
, Я пытался добавить другие простые куки, и они сохраняются, как и ожидалось.
Вот так я добавляю куки аутентификации форм
CustomUser user = service.GetUser(username, password);
if (user != null)
{
var serializeModel = new CustomPrincipalSerializeModel
{
UserName = user.UserName,
UserId = user.Id
};
var userData = JsonConvert.SerializeObject(serializeModel);
var authTicket = new FormsAuthenticationTicket(1, user.Id, DateTime.Now, DateTime.Now.AddMinutes(30), false, userData);
var encryptedTicket = FormsAuthentication.Encrypt(authTicket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) { Expires = DateTime.Now.AddMinutes(30) };
Response.AppendCookie(cookie);
}
И если я изменю эту строку
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket) { Expires = DateTime.Now.AddMinutes(30) };
к
var cookie = new HttpCookie("test", "testing") { Expires = DateTime.Now.AddMinutes(30) };
Тогда "тестовый" cookie будет работать как положено, и я могу получить его в Global.asax Application_PostAuthenticateRequest