【问题标题】:Authlogic perishable tokens - are they browser specific?Authlogic 易腐令牌 - 它们是特定于浏览器的吗?
【发布时间】:2010-11-05 13:06:43
【问题描述】:

我的一个网站上有一个奇怪的错误。我将 authlogic 用于所有与登录相关的内容,包括密码重置过程,其工作方式如下:

首先,用户输入他们的电子邮件地址并点击一个按钮以发送重置密码链接。在随后的操作中,我这样做:

user.reset_perishable_token!
user.host = request.host_with_port
token = user.perishable_token

'token' 进入他们随后发送的电子邮件中的一个链接,其格式如下:

<domain name>/users/edit_password?id=1670&token=y1j6k__imXOajyNGq8DN

其中 id 是用户的 id,token 是我刚刚生成的令牌。

在电子邮件链接指向的操作上,我这样做:

@user = User.find_using_perishable_token(params[:token], 1.day)

根据@user 是否为空,我决定令牌是否有效,他们可以继续更改密码。通常这工作正常,但我有一个问题,如果有人在一个浏览器中生成重置电子邮件,然后在另一个浏览器中收到电子邮件并单击它(从而在浏览器 B 中打开“edit_password”页面),则决定链接无效。

我想不出为什么浏览器会有所作为。我认为这可能是由于系统时间,但这在两种浏览器中都是一样的,对吧?

感谢任何想法 - 最大

【问题讨论】:

    标签: ruby-on-rails authlogic


    【解决方案1】:

    不应该有所作为。确保在发送 perishable 令牌后不要保存用户 - perishable 令牌将在保存时更改。

    【讨论】:

    • 谢谢 - 我认为它也不应该有所作为。易腐烂的令牌在任何给定的浏览器中都可以正常工作,所以我认为我在服务器端没有做错任何事情。这很神秘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2011-08-07
    相关资源
    最近更新 更多