ruby on rails - rails - Diseñar y fuertes parámetros
ruby devise token auth (3)
Actualización para el dispositivo 4.x
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end
end
Después de agregar ambas gemas, el dispositivo funcionará normalmente.
Actualización: con la última versión de Devise 3.x, tal como se describe en el artículo devise#strong-parameters , la clave de autenticación (normalmente el campo de correo electrónico) y los campos de contraseña ya están permitidos. Sin embargo, si hay campos adicionales en el formulario de inscripción, deberá informar a Devise de los campos adicionales que debe permitir. La forma más fácil de hacerlo es con un filtro:
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end
Para Devise 2.x, si utiliza la función de seguridad que requiere explícitamente incluir parámetros contaminados en el modelo de usuario:
include ActiveModel::ForbiddenAttributesProtection
los cambios necesarios se encuentran en https://gist.github.com/3350730 que anula algunos de los controladores.
Me gustaría saber cómo integrar ambas gemas (idear + Parámetros Fuertes), ya que es probable que se agreguen params fuertes al núcleo de rieles en 4.0
cualquier ayuda es bienvenida gracias
La manera más fácil es agregar un filtro simple antes en su ApplicationController. Si tiene roles diferentes y / u otro escenario más complejo, hay otras opciones en el siguiente enlace:
before_filter :configure_sanitized_params, if: :devise_controller?
def configure_sanitized_params
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:firstname, :designation_id, :middlename, :previous_experiance_year, :previous_experiance_month, :lastname, :email, :username, :password, :password_confirmation, :previous_experiance, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date, :image) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:remove_image, :firstname, :designation_id, :middlename, :lastname, :email, :username, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date, :image) }
end