uby on rails 用户密码加密

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

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

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

Ruby代码  收藏代码
  1. gem 'bcrypt-ruby', '~> 3.1.5'  

  2.运行bundle install ,安装gem

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

Ruby代码  收藏代码
  1. def change  
  2.     rename_column :users, :password, :password_digest  
  3. end  

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

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

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

Ruby代码  收藏代码
  1. @user = User.new(user_message)  
  2.   
  3. def user_message  
  4.     params.permit(:name, :password, :password_confirmation, :phone)  
  5. end  

 

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

Ruby代码  收藏代码
    1. if @user.authenticate(params[:password])  
    2.    return render :json => check_user_type(@user)  
    3. end  
posted @ 2018-04-04 14:59  lmg6406  阅读(207)  评论(0编辑  收藏  举报