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); }
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; }
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); }; }
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)); }