:token_authenticatableが削除されたので他の方法で実装してみた
4月1日ですが、エイプリルフールエントリーではないので、ご安心を!
桜がきれいに咲いて、『RailsとiPhoneではじめるアプリケーション開発』で疲れた私の心を癒してくれましたw
今回は、こちらのエントリの補足です。
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 010 - diceK66のブログ
タイトル通り、:token_authenticatableが新しいdeviseでは削除されているので、他の方法で実装してみました。
参考にしたサイト
http://gist.github.com/josevalim/fb706b1e933ef01e4fb6
http://stackoverflow.com/questions/18931952/devise-token-authenticatable-deprecated-what-is-the-alternative
Userテーブルにauthentication_tokenカラムを追加
$ rails g migration AddAuthenticationTokenToUser authentication_token:string
migrationファイルを編集
追加したauthentication_tokenカラムにユニークインデックスをはっておきます。
class AddAuthenticationTokenToUser < ActiveRecord::Migration def change add_column :users, :authentication_token, :string add_index :users, :authentication_token, unique: true #ここを追記 end end
DBに反映
いつものコマンドでDBに反映します。
$ rake db:migrate
application_controller.rbを修正
おそらく、現時点ではほぼ空になっているはずですが、以下のようにコードを追記します。
翻訳は適当ですのでご勘弁をw
class ApplicationController < ActionController::Base protect_from_forgery # これはDeviseのauthenticate_user!メソッドが呼ばれる前に呼び出される独自メソッドです。 before_filter :authenticate_user_from_token! # こちらがDeviseのメソッドです before_filter :authenticate_user! private def authenticate_user_from_token! user_email = params[:user][:email].presence user = user_email && User.find_by_email(user_email) # タイミング攻撃を防ぎつつ、paramsのトークンとDBのトークンを比較します if user && Devise.secure_compare(user.authentication_token, params[:user][:auth_token]) sign_in user, store: false end end end
userモデルにメソッドを追記
これだけだとカラムが追加されているだけなので、models/user.rb必要なメソッドを追加します。
(略) def reset_authentication_token! self.authentication_token = generate_authentication_token save end private def generate_authentication_token loop do token = Devise.friendly_token break token unless User.where(authentication_token: token).first end end end
以上で、正常にログインできるようになったと思います。
たまには桜でも見てリフレッシュするといい事ありますね!
その他の『RailsとiPhoneではじめるアプリケーション開発』の解説エントリーはこちら
Chapter 01 -> 03
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 03まで - diceK66のブログ
Chapter 04 -> 06
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 06まで - diceK66のブログ
Chapter 07
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 07 - diceK66のブログ
Chapter 08 -> 09
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 08 -> 09 - diceK66のブログ
Chapter 10
『RailsとiPhoneではじめるアプリケーション開発』を進める時の注意点・ハマったこと Chapter 010 - diceK66のブログ
- 作者: 栗田由菜,丸山弘詩
- 出版社/メーカー: インプレスジャパン
- 発売日: 2013/08/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る