Ciągle otrzymuję sprzeczne opinie na temat praktyki przechowywania informacji w Thread.current
hashu (np. Current_user, bieżąca subdomena itp.). Technika ta została zaproponowana jako sposób na uproszczenie późniejszego przetwarzania w warstwie modelu (określanie zakresu zapytań, audyt itp.).
- Dlaczego moje zmienne wątku występują sporadycznie w Railsach?
- Alternatywa dla Thread.current w opakowaniu API dla Railsów
- Czy wartości Thread.current [] i atrybuty na poziomie klasy są bezpieczne do użycia w railsach?
Wielu uważa tę praktykę za niedopuszczalną, ponieważ łamie wzorzec MVC. Inni wyrażają obawy co do niezawodności / bezpieczeństwa podejścia, a moje 2-częściowe pytanie skupia się na tym drugim aspekcie.
Czy
Thread.current
gwarantowane jest, że hash będzie dostępny i prywatny dla jednej i tylko jednej odpowiedzi przez cały cykl?Rozumiem, że wątek na końcu odpowiedzi może zostać przekazany innym przychodzącym żądaniom, powodując wyciek wszelkich przechowywanych w nim informacji
Thread.current
. Czy wyczyszczenie takich informacji przed zakończeniem odpowiedzi (np. Poprzez wykonanie odpowiedziThread.current[:user] = nil
od administratoraafter_filter
) wystarczyłoby, aby zapobiec takiemu naruszeniu bezpieczeństwa?
Dzięki! Giuseppe