ruby-on-rails – 随机生成的密码Rails 3.1

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 随机生成的密码Rails 3.1前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了一个新的网络应用程序的目的,我需要在我的注册页面(仅限管理员)只有一个电子邮件字段.

事情是,在轨道上完全是新的,所以甚至基本的东西,对我来说真的很困难…

我使用Railscast#270创建了我的身份验证,使用has_secure_password方法.
现在,一切工作都很好,我不需要所有这些恶棍…
我也想使用Action Mailer将生成的密码发送到他的电子邮件地址.
一个十六进制(8)的密码将是完美的(我已经看到了SecureRandom,但似乎被贬值)

Users_Controller:

class UsersController < ApplicationController
  skip_before_filter :is_connected?,:only => [:new,:create]

  def new
    @user = User.new
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      # Tell the Mailer to send a welcome Email after save
      Mailer.confirm_email(@user).deliver

      redirect_to root_url,:notice => "Signed up!"
    else
      render "new"
    end
  end
end

User_model:

class User < ActiveRecord::Base
  attr_accessible :email
  has_secure_password
  validates_presence_of :password,:email,:on => :create
end

现在,在我看来,我有2个字段.但正如我刚才所说,我只想要一个.
我想继续使用has_secure_password巫婆似乎提供了一个很好的安全关于哈希/盐.

解决方法

Rails提供ActiveSupport :: SecureRandom(根据Ruby版本)只是Ruby的SecureRandom的桥梁,或者在旧版本的Ruby上重新实现它(如果我的内存正确,SecureRandom在1.8.7中被添加)

现在,Rails支持的所有Ruby版本都已经不再需要SecureRandom内置的ActiveSupport :: SecureRandom,并已被弃用. SecureRandom本身无处可去 –

require 'securerandom'
SecureRandom.hex(8)

应该做的很好(你可能想考虑SecureRandom.urlsafe_base64更紧凑的表示相同数量的实际随机性)

原文链接:/ruby/272547.html

猜你在找的Ruby相关文章