uby on rails 用户密码加密

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

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

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

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

2.运行bundle install ,安装gem

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

  1. def change
  2. rename_column :users, :password, :password_digest
  3. end

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

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

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

  1. @user = User.new(user_message)
  2. def user_message
  3. params.permit(:name, :password, :password_confirmation, :phone)
  4. end

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

    1. if @user.authenticate(params[:password])
    2. return render :json => check_user_type(@user)
    3. end
上一篇:使用 jackson 解析 json 演示样例


下一篇:Tesseract处理背景渐变的图片