railsでパスワード暗号化

パスワードの暗号化の方法について書きます。

参考URL:bcrypt-rubyをRailsで使う - ばくのエンジニア日誌

 

パスワードの暗号化にはbcrypt-rubyというgemを使います。

gemのインストール

 Gemfileでbcrypt-rubyをコメントインします。

# To use ActiveModel has_secure_password
  gem 'bcrypt-ruby', '~> 3.0.0'

modelの編集

 DBにはpassword_digestというカラムを用意しておきます。
一方モデル側には、passwordpassword_digestにアクセスできるようにしておくのと、has_secure_passwordを宣言しておきます。

class User < ActiveRecord::Base
  has_secure_password
  attr_accessible :id, :user_name, :password, :password_digest
end

viewの編集

 フォームではpassword_digestではなく、passwordを使います。

<%= form_for @user do |f| %>
  <div class="field">
    <%= f.label :password %><br />
    <%= f.password_field :password %>
  </div>

controllerの編集

contorollerでは特に特別なことはしません。普通に保存、更新するのみ。

def create
  @shop = Shop.new(params[:shop])
  @shop.save
end

def update
  @shop = Shop.find(params[:id])
  @shop.update_attributes(params[:shop])
end