Безопасность использования Thread.current [] в рельсах

Я продолжаю получать противоречивые мнения о практике хранения информации в хэше Thread.current (например, current_user, текущий поддомен и т. Д.) ). Этот метод был предложен как способ упростить последующую обработку на уровне модели (определение объема запросов, аудит и т. Д.).

Многие считают эту практику неприемлемой, поскольку она нарушает шаблон MVC. Другие выражают озабоченность по поводу надежности / безопасности подхода, и мои две части вопрос фокусируется на последнем аспекте.

  1. Гарантируется ли, что хэш Thread.current будет доступным и приватным для одного и только одного ответа на протяжении всего цикла?

  2. Я понимаю, что поток в конце ответа может может быть передан другим входящим запросам, что приведет к утечке любой информации, хранящейся в Thread.current . Будет ли достаточно очистить такую ​​информацию до окончания ответа (например, путем выполнения Thread.current [: user] = nil из after_filter ] контроллера) для предотвращения такого нарушения безопасности?

Спасибо! Джузеппе

78
задан Giuseppe 30 May 2018 в 05:55
поделиться