Я использую проверку подлинности формы для приложения, и по истечении времени ожидания формы приложение регистрирует пользователя на странице входа.
Но когда я снова ввожу свои учетные данные, приложение не впускает пользователя. Когда я пробую его в другом браузере, оно работает нормально. Я подумал, что могут быть проблемы с кэшированием или cookie, поэтому я очистил кеш и cookie из браузера. Но это все еще не работает.
Я боюсь, что что-то может меня не так в моем коде.
Может кто-нибудь проверить?
Большое спасибо
protected void ManageRoles(string userid, string role)
{
FormsAuthentication.Initialize();
FormsAuthenticationTicket Authticket = new FormsAuthenticationTicket(1, userid, DateTime.Now, DateTime.Now.AddMinutes(180), true, role, FormsAuthentication.FormsCookieName);
string hash = FormsAuthentication.Encrypt(Authticket);
HttpCookie Authcookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (Authticket.IsPersistent)
{
Authcookie.Expires = Authticket.Expiration;
Response.Cookies.Add(Authcookie);
}
}
Global.asax
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity is FormsIdentity)
{
FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket Authticket = id.Ticket;
string userData = Authticket.UserData;
string[] roles = userData.Split(',');
HttpContext.Current.User = new GenericPrincipal(id, roles);
}
}
}
}