Rails-添加一个安全密钥以注册表单



我想在我的注册页面上使用通用安全密钥(定义的字符串(,以便随附提供的用户可以注册。这是为了确保那些注册的人是有意的人。

在我的用户架构中,我有一个字符串列" Security_key",因此在"注册"页面中,它可以在我的用户注册页面中接受安全键的输入。我不确定如何实施。

,因为您希望键是通用的,在注册表单中,您只需要一个text_field即可输入提供的安全密钥。

然后在您的registrations_controller中,您可以:

before_action :validate_security_key
private
def validate_security_key
  head :forbidden and return unless params[:security_key] == ENV.fetch('SECURITY_KEY')
end

建议/建议:

使安全密钥不安全,即通用没有任何意义。由于您针对人员注册,我想security_key将通过电子邮件/文字或其他一些媒体提供给他们,您提供注册URL以进行注册,因此我建议将该安全密钥在URL本身中以param和param的含量中的在应用程序中验证它。例如:

在您的邮件中:

link_to new_user_sign_up_url + "?security_key=#{User.security_key(@email)}"

在您的用户模型中:

def security_key(email)
  Digest::SHA256.hexdigest "#{email}MySecuredKey#{ENV.fetch('UNIVERSAL_SECURITY_KEY')}"
end

,您的前_ATCONT会更改为:

def validate_security_key
  head :forbidden and return unless params[:security_key] == User.security_key(params[:email])
end

希望它有帮助。

创建另一个表用于存储安全密钥。然后,您可以在注册时匹配用户提供的安全密钥。也许在您的regestration_controller中,添加before_action钩以调用方法check_security_key

def check_security_key
  unless SecurityKey.where(s_key: params[:security_key]).first.present?
     redirect_to signup_path
  end
end

这只是一个主意。您可以使用任何表名,列名。

最新更新