我想在我的注册页面上使用通用安全密钥(定义的字符串(,以便随附提供的用户可以注册。这是为了确保那些注册的人是有意的人。
在我的用户架构中,我有一个字符串列" 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
这只是一个主意。您可以使用任何表名,列名。