Я продолжаю получать противоречивые мнения о практике хранения информации в хеше Thread.current
(например, current_user, текущий поддомен и т.д.). Этот метод был предложен как способ упростить последующую обработку на уровне модели (область охвата запроса, аудит и т.д.).
- http://m.onkey.org/thread-safety-for-your-rails
- http://rails-bestpractices.com/posts/47-fetch-current-user-in-models
- Почему переменные потоков в Rails прерывисты?
- Альтернатива использованию Thread.current в оболочке API для Rails
- Являются ли значения Thread.current [] и атрибуты уровня класса безопасными для использования в рельсах?
Многие считают практику неприемлемой, поскольку она нарушает шаблон MVC. Другие выражают озабоченность по поводу надежности/безопасности подхода, и мой вопрос из двух частей посвящен второму аспекту.
-
Является ли хэш
Thread.current
гарантированным доступным и конфиденциальным для одного и только одного ответа на протяжении всего цикла? -
Я понимаю, что поток, в конце ответа, вполне может быть передан другим входящим запросам, тем самым утечка любой информации, хранящейся в
Thread.current
. Будет ли устранение такой информации до конца ответа (например, путем выполненияThread.current[:user] = nil
с контроллераafter_filter
) для предотвращения такого нарушения безопасности?
Спасибо! Giuseppe