2009-12-15 121 views
1

我想設置自動登錄通過給用戶一個鏈接/密鑰他們可以使用像http://domain.com/4yT67rw。最後7位數是隨機的,並分配給用戶模型。Rails自定義路由自動登錄

是否可以使用自定義路由來做到這一點?我想它必須像正則表達式一樣檢測它是一個關鍵,而不是一個模型名稱或錯誤。

將是巨大的,如果我可以這樣做:

map.connect 'reg_ex_here', :controller => 'users', :action => 'key_redirect' 

,然後在用戶控制器:

def key_redirect 
    user = User.find_by_key(key) 
    redirect_to user_path(user) 
end 

或很可能其他一些簡單的方法,我不知道。 ;)

感謝

回答

3

這樣的事情應該爲你工作:

map.key_redirect '/:key_id', :requirements => {:key_id => /regex_here/}, :controller => 'users', :actions => 'key_redirect' 

與所有的路線,然後你可以參考構建網址時key_redirect_path或key_redirect_url。

+0

太棒了。非常感謝,我不知道:要求 – Shagymoe 2009-12-15 20:03:10

+0

如果你要這樣做,我會建議不要在根網址做它。相反,也許像/ sessions/new/234829。 – jonnii 2009-12-15 22:47:11

+0

嗨Jonnii,你能詳細解釋爲什麼嗎?由大寫和小寫字母數字字符組成的16位數字密鑰具有1498858244768912625744091545600000可能的組合,所以我不擔心有人蠻力破解任何東西。 – Shagymoe 2009-12-16 11:44:23