1

最近アプリを更新してherokuにプッシュしました。更新された機能の1つは、セッションIDをユーザーIDから安全な16進数に変更することでした。プッシュすると、以前のユーザーがログインできなくなったことに気付きました。herokuコンソールを確認したところ、認証トークンがnilに設定されていることがわかりました。これは予想どおりです。私の質問は次のとおりです。

更新前にユーザーの認証トークンを設定する方法はありますか?これが再発しないように、更新前にユーザー用にこのトークンを作成するための何らかのループを作成できますか?

または、データベースをワイプして、ユーザーが再度サインアップできるようにする必要がありますか?

乾杯。

4

1 に答える 1

2

私を記憶してパスワードをリセットするコメントセクションからの解決策。

開発データベースで試してみてください

しばらく前に試してみましたが、 generate_tokenがメソッド名でauth_tokenがトークンを保存する DB フィールドである場合、すべてのユーザーの認証トークンが更新されます。現時点でトークンを持っていないユーザーのために変更する必要がある場合は、タスク内の if ステートメントで考えることができます。

lib/tasks/rebuild_token_auth.rakeにファイルを作成します。

namespace :user do
  desc "Rebuild Auth-Tokens"
  task :rebuild_auth_token => :environment do
    User.transaction do
      User.all.each { |u|
        u.generate_token(:auth_token)
        u.save!
      }
    end
  end
end

次のように呼び出します。

rake user:rebuild_auth_token

彼の例では、generate_token は次のようになります。

class User < ActiveRecord::Base
 def generate_token(column)
   begin
     self[column] = SecureRandom.urlsafe_base64
   end while User.exists?(column => self[column])
 end
end
于 2013-03-19T11:31:39.640 に答える