2017-07-03 1 views
0

Ich will nur inZwingende Devise der Parameter

Devise::SessionsController meine aktuellen Code den Wert des Passworts Parameter ändern sieht wie folgt aus:

class Api::V1::SessionsController < Devise::SessionsController 

    before_action :override_params, only: [:create] 

    private 

    def override_params 
    params[:user][:password] = '123123123' 
    end 

end 

In dem obigen Code, ich versuche, den Wert zu ändern des Benutzerpasswortes , aber wenn ich versuche, mich anzumelden, scheint es nicht die Benutzer-Passwort-Parameter zu überschreiben. Ich erhalte immer noch den Wert, den ich auf der URL eingegeben habe, nicht den, den ich im Controller außer Kraft gesetzt habe.

+0

Mögliche Duplikat [Automatische Einstellung Passwort für den Benutzer - Devise] (https://stackoverflow.com/questions/28398803/automatically-set-password-for -user-devise) –

+0

@MayurShah dieser ist anders. Es ist ein Wert zu einem ActiveRecord zuweisen, nicht Parameter –

+0

haben Sie versucht, etwas wie folgt: user.password = user.password_confirmation = Passwort in override_params –

Antwort

0

So etwas sollte (ungetestet) arbeiten

class ApplicationController < ActionController::Base 
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_in) do |user_params| 
     u_params = user_params.permit(:username, :email) 
     u_params[:password] = '123123123' 
     u_params.permit! 
    end 
    end 
end 
+0

Vielen Dank für diese Lösung, kann aber immer noch nicht den Wert des Parameters password ändern. Ich denke, das ist der Benutzer resource_params, aber ich kann den Wert nicht ändern. :( –

+0

können Sie mehr Kontext zur Verfügung stellen, was und warum Sie das brauchen? Vielleicht gibt es noch etwas, das getan werden kann –

+0

Ich erstelle eine API zum Entschlüsseln des Passworts kam von einer API-Anfrage von iOS-App. Also im Grunde die iOS-App Ich werde das verschlüsselte Passwort an mich weitergeben, aber an meinem Ende muss ich es entschlüsseln. Ich möchte die Benutzerparametern [: password] zu entschlüsseltem Passwort ändern, aber ich kann den Wert davon nicht überschreiben. Der Entschlüsselungsteil funktioniert bereits Ich habe ihn getestet auf meiner Rails Konsole. –