Mysql 如何在RubyonRails中对验证后的数据进行加密?
我正在使用Desive进行身份验证、注册。现在我想以加密格式将emailId保存在MySQL中。所以我使用gem'aescrypt' 我的控制器:Mysql 如何在RubyonRails中对验证后的数据进行加密?,mysql,ruby-on-rails,database,ruby-on-rails-4,devise,Mysql,Ruby On Rails,Database,Ruby On Rails 4,Devise,我正在使用Desive进行身份验证、注册。现在我想以加密格式将emailId保存在MySQL中。所以我使用gem'aescrypt' 我的控制器: def create @dashboard_user = DashboardUser.new(dashboard_user_params) @dashboard_user.created_by=current_dashboard_user.username @dashboard_user.company_id=current
def create
@dashboard_user = DashboardUser.new(dashboard_user_params)
@dashboard_user.created_by=current_dashboard_user.username
@dashboard_user.company_id=current_dashboard_user.company_id
active_ind = ""
email = @dashboard_user.email
if params["active"] == nil then
active_ind = "0"
else
active_ind = "1"
end
@dashboard_user.active = active_ind
@dashboard_user.email= AESCrypt.encrypt(email, "password")
respond_to do |format|
if @dashboard_user.save
format.html { flash[:notice] = 'User successfully Created.' and redirect_to action: "index"}
else
@dashboard_user.email = email
format.html { render :new }
end
end
end
当我试图保存用户时,它抛出无效的电子邮件。我删除了模型中电子邮件的验证。即使存在相同的错误。
这是什么问题?
验证后是否有加密数据的方法
提前感谢。如何验证电子邮件?
您可以使用自定义方法在验证(例如)正则表达式之前对其进行解密。
或者,您可以使用。在您的情况下,\u验证后的可能很有用:)
您可以使用验证后回调触发的方法加密数据。此处描述:您能发布DashboardUser类的一个片段吗?config/initializers/designe.rb中的身份验证密钥是什么?config.authentication\u keys=[:username]@Novaeundefined方法'after\u validation'用于Dashboard Users控制器:我要定义的类?哦,不,是活动的::Record方法!你应该把它放在你的模型里,而不是控制器里:)!将其放入仪表板用户
如何在视图中解密?不客气:)。请记住,下次从数据库获取记录时,密码已经加密。因此验证可能会失败。您应该仅在创建过程中对其进行验证,只需将on::create
作为参数添加到validates:email
(现在可以重新启用该参数)
after_validation(on: :create) do
self.email= AESCrypt.encrypt(email, "password")
end