tutorial rails gema ejemplos auth ruby-on-rails ruby ruby-on-rails-3 devise strong-parameters

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:

devise#strong-parameters


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