2015-03-05 7 views
2

В моем параметров фильтра инициализаторе, я отфильтровывая все параметры, связанные с паролем, которые важны уже:Рельсы Фильтр параметров фильтрации Слишком много

# config/initializers/filter_parameter_logging.rb 
Rails.application.config.filter_parameters += [:password, :password_confirmation] 

Но больше параметров отфильтровываются, чем я ожидал. Это похоже на все, что имеет «пароль» в имени, отфильтрованном из журналов.

{"password_invite_form"=>"[FILTERED]"} 

Есть ли способ предотвратить совпадение шаблонов для отфильтрованных параметров и соответствие заданным параметрам?

ответ

7

Вы можете использовать регулярное выражение, а не строку или символ, если вы хотите явно контролировать соответствие шаблонов.

# config/initializers/filter_parameter_logging.rb 
Rails.application.config.filter_parameters += [/^password$/, /^password_confirmation$/] 

Это покажет Rails фильтровать «пароль» и «password_confirmation» точно, но не фильтрует другие параметры, содержащие «Пароль» как подстроку.

+0

Я искренне удивлен, что документация не подчеркивает этого больше. Он упоминается попутно [здесь] (http://guides.rubyonrails.org/action_controller_overview.html#redirects-filtering), но не упоминает, что то же самое относится к фильтрации журналов. В приложении, которое я поддерживаю, фильтры, предназначенные для скрытия полей 'dln' и' tin', обрабатывали поля 'dln_state' и' report'. – maurice

0

Да. Вам нужно будет обезвредить часть рельсов, которые фильтруют параметры, содержащие «пароль».

Если бы это был мой проект, я бы позволил рельсам продолжать делать свое дело и просто выбрать другое имя для этого параметра. Если вам нужна помощь в том, как это сделать, просто прокомментируйте.

Смежные вопросы