Tôi tiếp tục nhận được những ý kiến trái chiều về cách lưu trữ thông tin trong Thread.current
hàm băm (ví dụ: current_user, tên miền phụ hiện tại, v.v.). Kỹ thuật này đã được đề xuất như một cách để đơn giản hóa quá trình xử lý sau này trong lớp mô hình (phạm vi truy vấn, kiểm tra, v.v.).
- Tại sao các biến luồng của tôi không liên tục trong Rails?
- Thay thế để sử dụng Thread.current trong trình bao bọc API cho Rails
- Các giá trị Thread.current [] và các thuộc tính mức lớp có an toàn để sử dụng trong rails không?
Nhiều người coi cách làm này là không thể chấp nhận được vì nó phá vỡ mô hình MVC. Những người khác bày tỏ lo ngại về độ tin cậy / an toàn của cách tiếp cận, và câu hỏi gồm 2 phần của tôi tập trung vào khía cạnh thứ hai.
Là
Thread.current
băm đảm bảo được cung cấp và tư nhân để một và chỉ một phản ứng, trong suốt toàn bộ chu kỳ của nó?Tôi hiểu rằng một chuỗi, ở cuối phản hồi, cũng có thể được chuyển giao cho các yêu cầu khác, do đó làm rò rỉ bất kỳ thông tin nào được lưu trữ trong đó
Thread.current
. Việc xóa thông tin như vậy trước khi kết thúc phản hồi (ví dụ bằng cách thực thiThread.current[:user] = nil
từ người kiểm soátafter_filter
) có đủ để ngăn chặn vi phạm bảo mật như vậy không?
Cảm ơn! Giuseppe