What have you found for these years?

2009-08-25

[心得] rails 2.3.3 是地雷? (2)

作者 godfat (godfat 真常) 看板 Ruby
標題 Re: [心得] rails 2.3.3 是地雷?
時間 Tue Aug 25 15:30:05 2009
───────────────────────────────────────

我在換了另一樣東西後,發生一樣的事情...
於是開始追蹤原因,因為可能不是 rails 的問題。
沒想到一 log 就看到原因了:

visitor_id = session[:cas_extra_attributes]['old_uid'] # what the hell?

我在最後註解 what the hell 是因為,傳進去的 key 明明就是 OldUID,
在 2.2.o 還是 2.o.o 的時候,就是寫 OldUID 就抓得到。
結果升級之後,爛掉,變成要寫成 old_uid. 抓到這個問題,讓我很火大。
所以才註解那段在那裡... 真的拜託不要亂動我的 key 啊。

現在我換了另一樣東西,OldUID 已經改成 id 了,因此出現一樣的狀況。
也就是說,visitor_id 變成 nil. 接著後面就是:

user = User.new
user.id = visitor_id
# ... #
user.save

這邊 user.id 是 nil, 然後又 save, 就變成 auto_increment,
自動取得了一個 id, 然後又用這個 id 去其他 server 查詢,
就會找到另一個已經存在的 user, 所以就變身了!


我猜 rails 2.3.3 大概就是把 session key 自動轉 key 拿掉了吧...
因此我的 session 又爛了。這邊需要注意的是,我不應該讓 id 是 nil 時,
也繼續跑程式。這樣在 rails 亂改的情況下,至少不會造成 session 亂跳。

--
#!/usr/bin/env ruby [露比] /Programming (Kn|N)ight/ 看板《Ruby》
# if a dog nailed extra legs that http://www.ptt.cc/bbs/Ruby/index.html
# walks like an octopus, and Welcome ~Ruby@ptt~
# talks like an octopus, then ◢█◣ http://www.ruby-lang.org/
# we are happy to treat it as █ http://www.ruby-doc.org/
# if it were an octopus. ◥ ◤ http://www.rubyforge.org/

--
※ 發信站: 批踢踢實業坊(ptt.cc)

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0