public IHttpResponse Handle(IHttpContext httpContext) { CommonValidator.ThrowIfNull(httpContext, nameof(httpContext)); string sessId = null; if (!httpContext.Request.Cookies.ContainsKey("SID")) { sessId = Guid.NewGuid().ToString(); httpContext.Request.Session = SessionStore.GetOrAdd(sessId); } IHttpResponse response = this.handlerFunc.Invoke(httpContext.Request); if (!string.IsNullOrEmpty(sessId)) { response.Headers.Add(new HttpHeader("Set-Cookie", $"SID={sessId}; HttpOnly; path=/")); } response.Headers.Add(new HttpHeader("Content-type", "text/html")); foreach (var cookie in response.Cookies) { response.Headers.Add(new HttpHeader("Set-Cookie", cookie.ToString())); } return(response); }
public IHttpResponse Handle(IHttpContext httpContext) { string sessionIdToSend = null; var httpRequest = httpContext.Request; if (!httpRequest.Cookies.ContainsKey(SessionStore.SessionCookieKey)) { sessionIdToSend = new Guid().ToString(); httpRequest.Session = SessionStore.GetOrAdd(sessionIdToSend); } IHttpResponse httpResponse = _f.Invoke(httpRequest); if (sessionIdToSend != null) { httpResponse.AddHeader( HttpHeader.SetCookie, $"{SessionStore.SessionCookieKey}={sessionIdToSend}; HttpOnly; path=/"); } if (!httpResponse.ContainsHeader(HttpHeader.ContentType)) { httpResponse.AddHeader(HttpHeader.ContentType, "text/plain"); } httpResponse.SetCookies(); return(httpResponse); }