I need to use a Single Page Application (React, Ember, Angular, I don't care) with Rails CSRF protection mechanism.
I'm wondering if I need to create a token evey time in the ApplicationController
like this:
class ApplicationController < ActionController::Base
after_action :set_csrf_cookie
def set_csrf_cookie
cookies["X-CSRF-Token"] = form_authenticity_token
end
end
or I can just create a token once.
Per session or per (non-GET) request?
I think the token is still valid until the session is valid, right?
CLARIFY:
I see Rails default application (server-rendered pages) update csrf-token each time I navigate a page. So every time it changes.
So in my situation if I create a new token for each after_action
the previous CSRF-Token is still good for that session. So, how to invalidate the previous token? I have to?
Because only if I invalidate it makes sense, right?