1

私は RoR を学ぶために、Hartl チュートリアルといくつかの railscasts に取り組んできました。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 に答える