用has_secure_password对密码进行加密
运行环境: rails 4.0.0
ruby2.0.0
sqlite3
活动通中的User模型中,原本用户密码是没有加密的,重构时给密码进行了加密处理。用哈希函数 bcrypt 对密码进行了不可逆的加密,得到密码的哈希值存入数据库中。在程序中使用 bcrypt,需要把 bcrypt-ruby 这个 gem 加入 Gemfile
即把gemfile中的对应注释去掉即可,如下:
# Use ActiveModel has_secure_passwordgem 'bcrypt-ruby', '~> 3.0.0'
bundle install
class User < ActiveRecord::Base has_secure_passwordend
def create@user = User.find_by(name: params[:session][:name]) if @user && @user.authenticate(params[:session][:password]) sign_in(@user) else flash.now[:notice]= '用户名或者密码不正确' render '/sessions/login' endend
用户 密码 a && b不存在 任意值 nil && [anything] => false存在错误的密码 true && false => false存在正确的密码 true && true => true