コード例 #1
0
        private void PostAuthenticateRequestHandler(object sender, EventArgs e)
        {
            var formsAuthentication = ServiceLocator.Current.GetInstance <IFormsAuthentication>();
            var ticket = formsAuthentication.GetAuthenticationTicket(new HttpContextWrapper(HttpContext.Current));

            if (ticket != null)
            {
                var mileageStatsIdentity = new MileageStatsIdentity(ticket);

                //Implemented workaround for the scenario where the user is not found in the repository
                // but the cookie exists.
                var getUser = ServiceLocator.Current.GetInstance <GetUserByClaimId>();
                if (getUser.Execute(mileageStatsIdentity.Name) == null)
                {
                    formsAuthentication.Signout();

                    if (Context.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
                    {
                        Context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                        Context.Response.End();
                    }
                    else
                    {
                        Context.Response.Redirect("~/Auth/Index", true);
                    }
                }
                else
                {
                    Context.User = new GenericPrincipal(mileageStatsIdentity, null);
                }
            }
        }
コード例 #2
0
        private void PostAuthenticateRequestHandler(object sender, EventArgs e)
        {
            HttpCookie authCookie = this.Context.Request.Cookies[FormsAuthentication.FormsCookieName];

            if (IsValidAuthCookie(authCookie))
            {
                var formsAuthentication = ServiceLocator.Current.GetInstance <IFormsAuthentication>();

                var ticket = formsAuthentication.Decrypt(authCookie.Value);
                var mileageStatsIdentity = new MileageStatsIdentity(ticket);
                this.Context.User = new GenericPrincipal(mileageStatsIdentity, null);

                // Reset cookie for a sliding expiration.
                formsAuthentication.SetAuthCookie(this.Context, ticket);
            }
        }
コード例 #3
0
        public void WhenSerialized_ThenCanBeDeSerialized()
        {
            var formatter = new BinaryFormatter();
            var identity  = new MileageStatsIdentity("Name", "DisplayName", 1);
            MileageStatsIdentity recoveredIdentity = null;

            using (var stream = new MemoryStream())
            {
                formatter.Serialize(stream, identity);
                stream.Seek(0, SeekOrigin.Begin);
                recoveredIdentity = (MileageStatsIdentity)formatter.Deserialize(stream);
            }

            Assert.NotNull(recoveredIdentity);
            Assert.Equal(identity.Name, recoveredIdentity.Name);
            Assert.Equal(identity.DisplayName, recoveredIdentity.DisplayName);
            Assert.Equal(identity.UserId, recoveredIdentity.UserId);
        }
コード例 #4
0
        private static User GetUserFromIdentity(GetUserByClaimId getUser, MileageStatsIdentity identity)
        {
            var user = getUser.Execute(identity.Name);

            return(user);
        }
コード例 #5
0
        public static User GetUserFromIdentity(this IUserServices services, MileageStatsIdentity identity)
        {
            var user = services.GetUserByClaimedIdentifier(identity.Name);

            return(user);
        }