-1

I am using nginx as a proxy between a front end and an API. When the API returns a token, nginx sets it as a cookie. The cookie will either have an expiry of 30 minutes, or 14 days if the user ticked 'remember me'

If they didn't tick remember me, I want the user to be logged out after 30 mins of inactivity, so on every request, if the cookie exists, I add it again with a new expiry of 30 minutes. However, if the user chose 'remember me' the original cookie has 14 day expiry and I don't want to shorten it!

Is there anyway to do something conditionally on based on the expiry of a cookie? Or I could store the expiry in a different cookie but I still don't know how to do anything conditionally on a date value. This is my config so far:

 # Determine max-age for cookie on initial login map $arg_remember $cookie_max_age { "true" "Max-age=1209600"; "false" "Max-age=1800"; } # Make a cookie if an x_my_token header was returned by API map $sent_http_x_my_token $header_to_cookie { "" $extend_cookie; default "my_token=$sent_http_x_my_token; path=/; HttpOnly; Secure; SameSite=Strict; $cookie_max_age"; } # This map extends the cookie by 30mins if it exists map $cookie_my_token $extend_cookie { "" ""; default "my_token=$cookie_my_token; path=/; HttpOnly; Secure; SameSite=Strict; Max-age=1800"; } server { ... location /api/ { ... proxy_set_header Authorization "Bearer ${cookie_my_token}"; add_header Set-Cookie $header_to_cookie; } } 

Thanks for any advice

1 Answer 1

1

Ok I worked this out myself, by having two cookies, one with a 14 day expiry (if user chooses remember me), and one with a 30 min expiry, which is extended by 30 mins on every request. If the short expiry cookie does not exist, it is recreated from the longer token if that is present.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.