예제 #1
0
        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;
            }
        }
예제 #2
0
        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);
        }