add support for more cookie flags in Request::AddCookie() method

changed in config options:
- renamed: http_session_id_name to session_cookie_name
- add config options: session_cookie_path, session_cookie_domain, session_cookie_same_site,
  session_cookie_http_only, session_cookie_secure
This commit is contained in:
2022-09-08 05:40:44 +02:00
parent 222a1c8a1f
commit 05ecac8426
8 changed files with 174 additions and 55 deletions

View File

@@ -1521,12 +1521,12 @@ void Request::PrepareSessionCookie()
if( !session->puser || !session->remember_me )
{
AddCookie(config->http_session_id_name, cookie_id_string);
AddDefaultSessionCookie(cookie_id_string);
}
else
{
pt::Date expires = start_time + config->session_remember_max_idle;
AddCookie(config->http_session_id_name, cookie_id_string, expires);
AddDefaultSessionCookie(cookie_id_string, &expires);
}
}
@@ -2143,6 +2143,39 @@ void Request::PutMethodName(pt::Stream & stream)
void Request::AddCookie(
const std::wstring & name,
const std::wstring * value_string,
const pt::Stream * value_stream,
pt::Date * expires,
const std::wstring * path,
const std::wstring * domain,
CookieSameSite cookie_same_site,
bool http_only,
bool secure)
{
pt::WTextStream cookie;
prepare_cookie_string(cookie, value_string, value_stream, expires, path, domain, cookie_same_site, http_only, secure);
out_cookies.add_stream(name, cookie);
}
void Request::AddDefaultSessionCookie(const std::wstring & value, pt::Date * expires)
{
AddCookie(
config->session_cookie_name,
&value,
nullptr,
expires,
&config->session_cookie_path,
&config->session_cookie_domain,
static_cast<CookieSameSite>(config->session_cookie_same_site),
config->session_cookie_http_only,
config->session_cookie_secure
);
}
void Request::FinishRequest()
{
modify_status_code_if_needed(); // will be removed