Rails5, devise_token_auth/deviseで暗号化方式を変更する
背景
devise_token_authを使って認証のあるアプリのAPIを開発している。色々あって、既存を活用しなくてはいけないのだが、その暗号化方式がデバイスで使われているものとは異なっていて、デバイス暗号化方式を変更する必要が出てきた。
使ったgemはdevise-encryptableなのですが、このREADMEが古すぎてこの通りでは動かなかったのでメモ。
ちなみにdevise_token_authでも認証周りは基本的にdeviseに依存しているので、以降deviseのみについて言及する。devise_token_authについても同様に動くことは確認済みなので安心してほしい。
deviseのgithubのwikiに導入方法が書いてあるのだが、この通りにやってもちゃんと動かないので注意が必要。
環境
MaxOSX: 10.12.3
Rails 5.0.1 (API mode)
devise_token_auth (0.1.40)
devise (4.2.0)
devise-encryptable (0.2.0)
手順
インストール
gem "devise-encryptable"
そしてbundle install
カラムを用意してあげる
ターミナルにて以下を実行
rails g migration add_column_to_users
class AddColumnToUser < ActiveRecord::Migration[5.0]
def change
add_column :users, :password_salt, :string
end
end
ターミナルにて
rails db:migrate
railsプロジェクトに必要事項の追加
以下のそれぞれのファイルに追加する。
# 勝手に作られないので自分で作ること
require 'digest/md5'
module Devise
module Encryptable
module Encryptors
class Md5 < Base
def self.digest(password, stretches, salt, pepper)
str = [password, salt].flatten.compact.join
Digest::MD5.hexdigest(str)
end
end
end
end
end
class User < ActiveRecord::Base
# 追加
devise :encryptable
end
以上でdeviseの使う暗号化方式をmd5に上書きすることができる。登録処理、ログイン処理までは試しているからおそらく問題ない。password_saltカラムが必要な理由としてはこれを参照するといいだろう。
参考
Author And Source
この問題について(Rails5, devise_token_auth/deviseで暗号化方式を変更する), 我々は、より多くの情報をここで見つけました https://qiita.com/u_kan/items/a563b26726181d6a8d1b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .