Простой секретный вопрос - как передавать подобный параметру защитный код в повседневных действиях? - PullRequest
0 голосов
/ 12 марта 2011

У меня есть ситуации, когда я хочу быть уверенным, что одно действие контроллера (или маршрут) может быть доступно только через другое действие контроллера, а не введено. Например, у меня есть пара действий контроллера «коммутатора», которые разрешить внутреннюю аналитику, установить начальные значения, а затем отправить разных пользователей в соответствующие пункты назначения (каждый пункт назначения имеет свое собственное действие контроллера).

Пример такой ситуации: пользователь должен иметь возможность просматривать только те записи, которые сначала прошли через действие коммутатора.

Один из способов сделать это - как-нибудь задействовать скоропортящиеся токены? (Я использую AuthLogic в своем приложении).

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

Как предложил @SpyrosP, одним из вариантов будет использование сеанса.

Для пояснения, сеанс должен быть сеансом на стороне сервера.Если вы используете сеансы cookie, вы должны рассмотреть другой способ хранения.Сеансы хранения cookie-файлов Rails должны быть безопасными, но даже в документах предлагается использовать другой метод, если вы не хотите, чтобы пользователь видел данные (http://apidock.com/rails/ActionDispatch/Session/CookieStore)

Если вы используете хранилище сеансов на стороне сервера (http://apidock.com/rails/ActiveRecord/SessionStore), ваш рискзначительно уменьшается. Единственное, что хранится в клиентском браузере, это файл cookie, который отображается на запись на стороне сервера. Rails выполняет всю тяжелую работу, чтобы избежать перехватов и фиксации сеансов.

0 голосов
/ 12 марта 2011

Я сделал нечто подобное, используя сеанс.В моем случае действие имело:

session[:boss_attack] = 1

, а другое действие имело:

if session[:boss_attack] != 1
    redirect_to :action => 'index' and return
else
    session[:boss_attack] = 0
end  

И тогда я продолжил бы действительное действие.Вроде нормально работает :) 1007 *

...