zoukankan      html  css  js  c++  java
  • 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  
  • 相关阅读:
    【[Offer收割]编程练习赛12 B】一面砖墙
    【[Offer收割]编程练习赛12 A】歌德巴赫猜想
    【codeforces 779E】Bitwise Formula
    Java Web整合开发(85)
    数字
    T2602 最短路径问题 codevs
    P3378 堆【模板】 洛谷
    T1013 求先序排列 codevs
    P1717 钓鱼 洛谷
    P2085 最小函数值 洛谷
  • 原文地址:https://www.cnblogs.com/lmg-jie/p/8717284.html
Copyright © 2011-2022 走看看