Exemple #1
0
        private static void AcquireSession(Basics.Context.IHttpRequest request, out Basics.Session.IHttpSession session)
        {
            string sessionCookieKey =
                Configurations.Xeora.Session.CookieKey;

            Basics.Context.IHttpCookieInfo sessionIdCookie =
                request.Header.Cookie[sessionCookieKey];
            request.Header.Cookie.Remove(sessionCookieKey);

            SessionManager.Current.Acquire(sessionIdCookie?.Value, out session);
        }
Exemple #2
0
        public HttpContext(string contextID, ref Basics.Context.IHttpRequest request)
        {
            string sessionCookieKey = Basics.Configurations.Xeora.Session.CookieKey;

            this.Request  = request;
            this.Response = new HttpResponse(contextID);

            string sessionID = string.Empty;

            Basics.Context.IHttpCookieInfo sessionIDCookie =
                this.Request.Header.Cookie[sessionCookieKey];
            if (sessionIDCookie != null)
            {
                sessionID = sessionIDCookie.Value;

                // Remove sessioncookie from the request object
                ((HttpCookie)this.Request.Header.Cookie).Remove(sessionCookieKey);
            }

            SessionManager.Current.Acquire(
                sessionID,
                out this._Session);

            ((HttpResponse)this.Response).SessionCookieRequested +=
                (skip) =>
            {
                if (skip)
                {
                    return(null);
                }

                if (string.Compare(sessionID, this._Session.SessionID) == 0)
                {
                    return(null);
                }

                if (this._Session.Keys.Length == 0)
                {
                    return(null);
                }

                // Create SessionCookie
                sessionIDCookie =
                    this.Response.Header.Cookie.CreateNewCookie(sessionCookieKey);
                sessionIDCookie.Value    = this._Session.SessionID;
                sessionIDCookie.HttpOnly = true;

                return(sessionIDCookie);
            };

            this.Application = ApplicationContainer.Current;
        }
Exemple #3
0
        public HttpContext(
            string contextId,
            bool secure,
            Basics.Context.IHttpRequest request,
            Basics.Context.IHttpResponse response,
            Basics.Session.IHttpSession session,
            Basics.Application.IHttpApplication application)
        {
            this.UniqueId = contextId;
            this.HashCode =
                this.GetOrCreateHashCode(ref request);
            this.Request     = request;
            this.Response    = response;
            this.Session     = session;
            this.Application = application;

            ((HttpResponse)this.Response).SessionCookieRequested +=
                skip =>
            {
                if (skip)
                {
                    return(null);
                }

                if (this.Session.Keys.Length == 0)
                {
                    return(null);
                }

                // Create SessionCookie
                string sessionCookieKey =
                    Basics.Configurations.Xeora.Session.CookieKey;
                Basics.Context.IHttpCookieInfo sessionIdCookie =
                    this.Response.Header.Cookie.CreateNewCookie(sessionCookieKey);
                sessionIdCookie.Value    = this.Session.SessionId;
                sessionIdCookie.Expires  = this.Session.Expires;
                sessionIdCookie.SameSite = secure ? Basics.Context.SameSiteTypes.None : Basics.Context.SameSiteTypes.Lax;
                sessionIdCookie.Secure   = secure;
                sessionIdCookie.HttpOnly = true;

                return(sessionIdCookie);
            };
        }
Exemple #4
0
        private string GetOrCreateHashCode(ref Basics.Context.IHttpRequest request)
        {
            string requestFilePath =
                request.Header.Url.RelativePath;

            int biIndex =
                requestFilePath.IndexOf(Basics.Configurations.Xeora.Application.Main.ApplicationRoot.BrowserImplementation, StringComparison.InvariantCulture);

            if (biIndex > -1)
            {
                requestFilePath = requestFilePath.Remove(0, biIndex + Basics.Configurations.Xeora.Application.Main.ApplicationRoot.BrowserImplementation.Length);
            }

            System.Text.RegularExpressions.Match mR =
                System.Text.RegularExpressions.Regex.Match(requestFilePath, "\\d+/");

            if (mR.Success && mR.Index == 0)
            {
                return(mR.Value.Substring(0, mR.Length - 1));
            }

            return(this.GetHashCode().ToString().Replace("-", string.Empty));
        }