最佳答案
关于在 Thread.current
散列中存储信息的实践(例如,current _ user、当前子域等) ,我总是得到相互矛盾的意见。该技术已被提出作为一种简化模型层后续处理(查询范围、审计等)的方法。
许多人认为这种做法是不可接受的,因为它打破了 MVC 模式。 其他人则对这种方法的可靠性/安全性表示担忧,我的两部分问题集中在后一方面。
Thread.current
散列是否保证在整个周期中对一个且仅对一个响应可用和私有?
我理解,在响应结束时,一个线程很可能被移交给其他传入请求,从而泄露存储在 Thread.current
中的任何信息。在响应结束前清除这些信息(例如从控制器的 after_filter
执行 Thread.current[:user] = nil
)是否足以防止这种安全性破坏?
谢谢! 朱塞佩