Как установить файлы cookie в ApplicationController?
Мне нужно установить файлы cookie в моем ApplicationController, но я не уверен, как это сделать. Я пробовал использовать файлы cookie - ничего, используя ActionController:: Cookies - ничего.
Мне больше не нужно устанавливать и получать файлы cookie, но мне нужно установить их в ApplicationController.
EDIT:
Найден ответ: request.cookies['help'] = 'yes'
Ответы
Ответ 1
Что вы понимаете, установив cookie в контроллер приложения? Вы должны установить cookie в браузере, соответствующее некоторому действию контроллера. Если вы хотите установить cookie для всех действий, вы можете подумать об использовании фильтра before и применить этот фильтр ко всем действиям вашего контроллера.
Вы можете установить и удалить файлы cookie, как показано ниже:
cookies[:key] = {
:value => 'a yummy cookie',
:expires => 1.year.from_now,
:domain => 'domain.com'
}
cookies.delete(:key, :domain => 'domain.com')
Обратите внимание, что если вы указываете домен: при настройке файла cookie, вы также должны указать домен при удалении файла cookie.
например. cookies[:user_name] = "david"
Ответ 2
Вы можете упростить использование файлов cookie, которые вы хотите повесить на некоторое время
cookies.permanent[:some_cookie] = "gingerbread"
Ответ 3
Файлы cookie считываются и записываются через файлы cookie ActionController #. Считываемые файлы cookie - это файлы, полученные вместе с запросом; записанные файлы cookie будут отправлены вместе с ответом. Чтение cookie не возвращает сам объект cookie, только его значение.
cookies[:appToken] = {
value: 'IOWQ92038192319JKNJKW',
expires: 1.year.from_now,
domain: 'www.example.com',
path: '/admin',
secure: false,
httponly: false,
}
path
- путь, к которому относится этот файл cookie. По умолчанию используется корневой каталог приложения.
secure
- передается ли этот файл cookie только на HTTPS-серверы. По умолчанию установлено значение false
.
httponly
- доступен ли этот файл cookie через сценарий или только через HTTP. По умолчанию false
. Если cookie httponly
установлен на true
, тогда cookie доступен через Javascript. Это установлено в целях безопасности, чтобы защитить куки от перехвата злоумышленником канала связи между браузером и сервером. Тем не менее, прослушивание - не единственный вектор атаки, позволяющий захватить cookie. Злоумышленник может воспользоваться уязвимостью XSS для кражи куки файла аутентификации. Оказывается, для решения этой проблемы можно использовать флаг HttpOnly
.
Для дополнительной информации - https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Cookies.html