ruby on rails 用户密码加密

运行环境: rails 4.2.1 
                   ruby 2.0.0p481
                   mysql(支持多种数据库)

在实际的项目中,需要注意对用户隐私的保护,这往往需要对用户的密码进行加密,下面是对其中一种密码加密库使用的介绍

  1. 在Gemfile中引入gem包'bcrypt-ruby '指定版本号,我使用的版本是3.1.5

gem 'bcrypt-ruby', '~> 3.1.5'

  2.运行bundle install ,安装gem

  3.modle 里原来的password(如果是已经建立了该字段)需要把对应的字段改为password_digest 

def change
    rename_column :users, :password, :password_digest
end

  4.在modle里的user.rb里加入has_secure_password

class User < ActiveRecord::Base
  validates :name, :presence => {:message => '用户不能为空'},:uniqueness =>{:message => '用户名已存在!'}
  validates :phone, :presence => {:message =>'电话不能为空'}
  has_secure_password

end

  5.在controller里的创建新的modle 是注意传入两个字段password,password_confirmation,在创建modle时会自动将加密后的密码保存到password_digest字段上

@user = User.new(user_message)

def user_message
    params.permit(:name, :password, :password_confirmation, :phone)
end

 

  6.保存成功后,登录验证时authenticate 方法验证密码是否正确返回boolean值

if @user.authenticate(params[:password])
   return render :json => check_user_type(@user)
end

 

猜你喜欢

转载自liguangsong.iteye.com/blog/2216482