private static void OnAuthenticateRequest(object sender, EventArgs e)
        {
            var application = (HttpApplication)sender;

            HttpContext context = application.Context;

            if (context.User != null && context.User.Identity.IsAuthenticated)
            {
                return;
            }

            string cookieName = "webrunes";//FormsAuthentication.FormsCookieName;

            HttpCookie cookie = application.Request.Cookies[cookieName];

            if (cookie == null)
            {
                return;
            }
            try
            {
                FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);
                var identity  = new CustomIdentity(AccountCollectionEntry.Deserialize(ticket.UserData), ticket.Name);
                var principal = new GenericPrincipal(identity, identity.GetRoles());
                context.User            = principal;
                Thread.CurrentPrincipal = principal;
            }
            catch
            {
            }
        }
Esempio n. 2
0
 public static string Serialize(AccountCollectionEntry accountColle)
 {
     using (var stream = new MemoryStream())
     {
         var formatter = new XmlSerializer(typeof(AccountCollectionEntry));
         formatter.Serialize(stream, accountColle);
         return Encoding.UTF8.GetString(stream.ToArray());
     }
 }
        private void UpdateContextResponse(FormsAuthenticationTicket authTicket, AccountCollectionEntry accountEntry)
        {
            var authCookie = new HttpCookie("webrunes", FormsAuthentication.Encrypt(authTicket))
            {
                Expires = DateTime.UtcNow.AddDays(30)
            };

            _context.Response.Cookies.Add(authCookie);
            var identity  = new CustomIdentity(accountEntry, authTicket.Name);
            var principal = new GenericPrincipal(identity, identity.GetRoles());

            _context.User = principal;
        }
        public void SignIn(UserAccount user, bool createPersistentCookie)
        {
            var accountEntry = new AccountCollectionEntry();

            accountEntry.AddAccount(user, createPersistentCookie);
            var authTicket = new FormsAuthenticationTicket(1,
                                                           user.Id,
                                                           DateTime.Now,
                                                           DateTime.Now.AddYears(5),
                                                           createPersistentCookie,
                                                           AccountCollectionEntry.Serialize(accountEntry));

            UpdateContextResponse(authTicket, accountEntry);
        }
        public void DeleteUserFromContext(string id)
        {
            HttpCookie currentUserCookie     = _context.Request.Cookies["webrunes"];
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(currentUserCookie.Value);
            var collectionentry = AccountCollectionEntry.Deserialize(ticket.UserData);

            collectionentry.DeleteBy(id);
            collectionentry.CurrentAccountId = null;

            var authTicket = new FormsAuthenticationTicket(1,
                                                           "",
                                                           DateTime.Now,
                                                           DateTime.Now.AddDays(-1),
                                                           false,
                                                           AccountCollectionEntry.Serialize(collectionentry));

            UpdateContextResponse(authTicket, collectionentry);
        }
        public bool SignOut(IUserService userService)
        {
            if (!_context.User.Identity.IsAuthenticated)
            {
                return(false);
            }
            HttpCookie currentUserCookie = _context.Request.Cookies["webrunes"];

            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(currentUserCookie.Value);
            var collectionentry = AccountCollectionEntry.Deserialize(ticket.UserData);

            collectionentry.CurrentAccountId = null;

            var authTicket = new FormsAuthenticationTicket(1,
                                                           "",
                                                           DateTime.Now,
                                                           DateTime.Now.AddDays(-1),
                                                           false,
                                                           AccountCollectionEntry.Serialize(collectionentry));

            UpdateContextResponse(authTicket, collectionentry);
            return(true);
        }
Esempio n. 7
0
 public CustomIdentity(AccountCollectionEntry accountEntry, string name)
 {
     Name = name;
     this.AccountCollectionEntry = accountEntry;
 }