运行环境: 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