Я работаю с авторизацией с Rails (gem jwt_sessions). У меня есть контроллер входа и обновления контроллера. Я установил куки (jwt_access, refresh_access, csrf). В большинстве случаев сервер отвечает токеном csrf и сохраняет файлы cookie httponly (доступ, обновление). Затем клиент отправляет запрос с токеном csrf и получает ответ. Но также можно хранить токен csrf в cookie и отвечать только статусом на сервер (более безопасный способ). Но как авторизовать токен csrf из cookie?
Когда я помещаю токен csrf в заголовок запроса, он работает, но я хочу, чтобы он был в cookie и авторизовал его из cookie.
if is_valid_for_auth
payload = { user_id: user.id }
session = JWTSessions::Session.new(payload: payload, refresh_payload: payload)
tokens = session.login
response.set_cookie(JWTSessions.access_cookie,
value: tokens[:access],
httponly: true,
secure: Rails.env.production?)
response.set_cookie(JWTSessions.refresh_cookie,
value: tokens[:refresh],
httponly: true,
secure: Rails.env.production?)
response.set_cookie('csrf_token',
value: tokens[:csrf],
httponly: true,
secure: Rails.env.production?)
else
render json: 'Invalid email or password', status: :unauthorized
end