2009-12-15 145 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