2012-08-10 26 views
39

Vorrei sapere come integrare entrambe queste gemme (ideare + Parametri Strong), dal momento che params forti probabilmente saranno aggiunti al nucleo rotaie in 4,0Devise e parametri forti

ogni aiuto è benvenuto grazie

risposta

52

Aggiornamento per disposizione testamentaria 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 

Dopo aver aggiunto due gemme, ideare funzionerà come normale.

Aggiornamento: con l'ultima versione di Devise 3.x, come descritto in devise#strong-parameters, la chiave di autenticazione (normalmente il campo di posta elettronica) ei campi della password sono già consentiti. Tuttavia, se nel modulo di registrazione sono presenti ulteriori campi, è necessario consentire a Devise di conoscere i campi aggiuntivi da consentire. Il modo più semplice per farlo è 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 

Per Devise 2.x, se si utilizza la funzione di sicurezza che richiede esplicitamente whitelist parametri contaminato nel modello di utente:

include ActiveModel::ForbiddenAttributesProtection 

i cambiamenti necessari sono trovati a https://gist.github.com/3350730 che sovrascrive alcuni dei controller.

+0

La risposta successiva è meglio, dal mio punto di vista, dal momento che viene inoltrata su Devise public API – msa7

+1

Ciò sarebbe dovuto al fatto che la mia risposta proveniva da oltre un anno fa. Ho aggiornato la risposta in base ai nuovi sviluppi. – ronalchn

+0

questa domanda è un perfetto esempio di quanto sia piccolo il mondo, hai risposto alla mia domanda con il mio gist = D –

1
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 

Copia e incolla questo codice al controller dell'applicazione, anche al posto di: cognome, e altri campi, devi aggiungere i tuoi campi.

+0

sì, questo è il nuovo modo di farlo. la domanda è stata posta nel giorno in cui idea non aveva implementato forti parametri sul loro codice. –

Problemi correlati