Кэширование страницы формы Ruby on Rails включая authenticity_token

У меня есть простая форма Ruby on Rails, которая включает authenticity_token. Unfortunatly, я пропустил это, когда Вы разбиваете на страницы кэш эта страница тогда, Маркер Подлинности становится недопустимым. Я рад, что понял это как бы то ни было.

Как Вы решаете кэширование в таком случае?

18
задан jacob 5 March 2010 в 04:30
поделиться

2 ответа

Как написал Matchu, вы можете реализовать пункт два из этого сообщения (та же ссылка, которую он опубликовал, но также была найдена через мой Google ). Это добавляет зависимость от JavaScript, которая может вам понравиться, а может и нет.

Кроме того, вы можете изучить Кэширование фрагментов . Это позволяет кэшировать определенные части страницы, но при этом генерировать динамические части (например, формы с токенами аутентичности). Используя эту технику, вы можете кэшировать остальную часть страницы, но генерировать новую форму для каждого запроса.

Последнее решение (но наименее благоприятное) - отключить токен аутентичности для этого конкретного действия. Вы можете сделать это, добавив следующее в начало контроллера, генерирующего эту форму:

protect_from_forgery :except => [:your_action]

Вы также можете отключить protect_from_forgery для всего контроллера, добавив следующее в начало:

skip_before_filter :verify_authenticity_token
23
ответ дан 30 November 2019 в 08:27
поделиться

Кажется, проблема не решена. Во втором пункте этого сообщения в блоге описывается, как выполнить задачу с помощью jQuery, но здесь вводится зависимость от Javascript. Я полагаю, взвесьте свои варианты.

1
ответ дан 30 November 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: