1

为了学习 RoR,我一直在学习 Hartl 教程和一些 railscast。在实施 railscast“记住密码”复选框后,我无法再在 Heroku 托管站点上注销我的示例用户。一切都在本地运行良好,但在 Heroku 上,如果我尝试签名,flash 会告诉我我已成功注销,但实际上什么也没发生。即使在数据库迁移之后问题仍然存在。我认为我的问题与类似,但我看到没有人回答这个问题。有没有人有任何想法?我正在使用bcrypt-rubygem(版本 3.0.1)。

sign_in在会话助手中的操作如下所示:

def sign_in(user)
  if params[:remember_me]
    cookies.permanent[:remember_token] = user.remember_token
  else
    cookies[:remember_token] = user.remember_token
  end
  self.current_user = user
end

我的sign_out动作是这样的:

def sign_out
  self.current_user = nil
  cookies.delete(:remember_token)
end

@abhir - 我认为这些是日志中的相关位:

2013-04-04T14:13:34+00:00 app[web.1]: Started DELETE "/signout" for 108.228.60.12 at 2013-04-04 14:13:34 +0000
2013-04-04T14:13:34+00:00 app[web.1]:   Parameters: {"authenticity_token"=>"<TOKENWASHERE>"}
2013-04-04T14:13:34+00:00 app[web.1]: Redirected to https://quiet-spire-8115.herokuapp.com/
2013-04-04T14:13:34+00:00 app[web.1]: Processing by SessionsController#destroy as HTML
2013-04-04T14:13:34+00:00 app[web.1]: Completed 302 Found in 1ms (ActiveRecord: 0.0ms)
2013-04-04T14:13:34+00:00 heroku[router]: at=info method=POST path=/signout host=quiet-spire-8115.herokuapp.com fwd="108.228.60.12" connect=11ms service=15ms status=302 bytes=105
2013-04-04T14:13:34+00:00 app[web.1]: Started GET "/" for 108.228.60.12 at 2013-04-04 14:13:34 +0000
2013-04-04T14:13:34+00:00 app[web.1]: Processing by StaticPagesController#home as HTML

如您所见,该站点在这里。谢谢你的帮助!

4

1 回答 1

0

我有同样的问题,这里是修复。此修复程序的唯一问题是您无法保持以 user/1 身份登录。但是,它适用于其他所有人。本质上,heroku 将没有 cookie 与 user/1 相关联。至少我是这样理解的,它是向我解释的。

尝试在我们的会话助手中将您当前的用户方法更改为:

def current_user
    if cookies[:remember_token].present?
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
end

结尾

于 2013-04-08T01:33:54.760 回答