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
というカラムを用意しておきます。
一方モデル側には、password
とpassword_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