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);
        }
Exemplo n.º 2
0
        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);
        }