HttpSession* SessionManager::startSession(const HttpRequest& request, HttpResponse& response) { cleanUpOldSessions(); HttpSession* session = NULL; if(mUseCookies) { try { const HttpCookie& sessionCookie = request.getCookie(mCookieName); session = startSessionInternal(sessionCookie.getValue(), true, request, response); } catch(const CookieNotFoundException& ex) { } } if(!session && mUseRequest) { try { session = startSessionInternal(request.getAttribute(mRequestName), true, request, response); } catch(const AttributeNotFoundException& ex) { } } if(!session) { session = startSessionInternal(generateSessionId(request, response), false, request, response); } if(mUseCookies && session) { if(mCookieLifeTime > 0) { response.addCookie(HttpCookie(mCookieName, session->getId(), mCookieLifeTime)); } else { response.addCookie(HttpCookie(mCookieName, session->getId())); } } return session; }
void DumpController::service(HttpRequest& request, HttpResponse& response) { response.setHeader("Content-Type", "text/html; charset=ISO-8859-1"); response.setCookie(HttpCookie("firstCookie","hello",600)); response.setCookie(HttpCookie("secondCookie","world",600)); QByteArray body("<html><body>"); body.append("<b>Request:</b>"); body.append("<br>Method: "); body.append(request.getMethod()); body.append("<br>Path: "); body.append(request.getPath()); body.append("<br>Version: "); body.append(request.getVersion()); body.append("<p><b>Headers:</b>"); QMapIterator<QByteArray,QByteArray> i(request.getHeaderMap()); while (i.hasNext()) { i.next(); body.append("<br>"); body.append(i.key()); body.append("="); body.append(i.value()); } body.append("<p><b>Parameters:</b>"); i=QMapIterator<QByteArray,QByteArray>(request.getParameterMap()); while (i.hasNext()) { i.next(); body.append("<br>"); body.append(i.key()); body.append("="); body.append(i.value()); } body.append("<p><b>Cookies:</b>"); i=QMapIterator<QByteArray,QByteArray>(request.getCookieMap()); while (i.hasNext()) { i.next(); body.append("<br>"); body.append(i.key()); body.append("="); body.append(i.value()); } body.append("<p><b>Body:</b><br>"); body.append(request.getBody()); body.append("</body></html>"); response.write(body,true); }
HttpSession HttpSessionStore::getSession(HttpRequest& request, HttpResponse& response, bool allowCreate) { QByteArray sessionId=getSessionId(request,response); mutex.lock(); if (!sessionId.isEmpty()) { HttpSession session=sessions.value(sessionId); if (!session.isNull()) { mutex.unlock(); session.setLastAccess(); return session; } } // Need to create a new session if (allowCreate) { QByteArray cookieName=settings->value("cookieName","sessionid").toByteArray(); QByteArray cookiePath=settings->value("cookiePath","/").toByteArray(); QByteArray cookieComment=settings->value("cookieComment").toByteArray(); QByteArray cookieDomain=settings->value("cookieDomain").toByteArray(); HttpSession session(true); qDebug("HttpSessionStore: create new session with ID %s",session.getId().data()); sessions.insert(session.getId(),session); response.setCookie(HttpCookie(cookieName,session.getId(),expirationTime/1000,cookiePath,cookieComment,cookieDomain)); mutex.unlock(); return session; } // Return a null session mutex.unlock(); return HttpSession(); }
void HttpServletRequest::setCookie(const char* name, const char* value) { if (name == NULL || *name == 0 || value == NULL) return; HttpCookie* cookie = NEW HttpCookie(name, value); cookies_.push_back(cookie); }
http_header& http_header::add_cookie(const char* name, const char* value, const char* domain /* = NULL */, const char* path /* = NULL */, time_t expires /* = 0 */) { if (name == NULL || *name == 0 || value == NULL) return *this; HttpCookie* cookie = NEW HttpCookie(name, value); if (domain && *domain) cookie->setDomain(domain); if (path && *path) cookie->setPath(path); if (expires > 0) cookie->setExpires(expires); cookies_.push_back(cookie); return *this; }