public bool Auth(Func<string, string> getrole) { var tk = WebIdentifier.Ticket; try { var dcc = tk.DecClientConfirm; var ct = tk.ClientToken; var rlt = string.Equals(dcc, ct); if (!rlt) { tk.Username = AnonymousUser; } else { var user = tk.Username; if (string.IsNullOrEmpty(user)) { user = AnonymousUser; } var d = new UserData { Id = tk.Id, Role = getrole != null ? getrole(user) : "Guest", Username = tk.Username }; GenFormCookie(user, d); } return rlt; } catch (Exception ex) { Error.Handle(ex); tk.Username = null; return false; } }
private static void GenFormCookie(string user, UserData d) { var authTicket = new FormsAuthenticationTicket(1, user, DateTime.Now, DateTime.Now.AddMinutes(30), true, d.ToJson()); string cookieContents = FormsAuthentication.Encrypt(authTicket); var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents) { Expires = authTicket.Expiration, Path = FormsAuthentication.FormsCookiePath }; HttpContext.Current.Response.Cookies.Set(cookie); }