2017-07-03 61 views
0

我只是想修改重寫設計的參數

Devise::SessionsController我當前的代碼密碼參數的值是這樣的:

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

    before_action :override_params, only: [:create] 

    private 

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

end 

在上面的代碼中,我試圖修改的值的用戶密碼 ,但是當我嘗試登錄時,好像它不覆蓋用戶密碼參數。我仍然獲得我在URL上輸入的值,而不是在控制器中被覆蓋的值。

+0

的可能的複製[自動設置密碼的用戶 - 設計(https://stackoverflow.com/questions/28398803/automatically-set-password-for用戶設計) –

+0

@MayurShah這是不同的。它爲ActiveRecord分配一個值,而不是參數 –

+0

您是否嘗試過這樣的操作:user.password = user.password_confirmation = override_params中的密碼 –

回答

0

像這樣的東西應該工作(未經測試)

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

感謝您使用此解決方案,但仍無法修改password參數的值。我認爲設計是用戶resource_params,但我不能修改這個值。 :( –

+0

你可以提供更多的背景知道什麼,爲什麼你需要這個?也許還有別的可以做的 –

+0

我創建了一個API來解密密碼來自iOS應用的API請求,所以基本上iOS應用會傳遞給我加密的密碼,然後我需要解密它我想修改用戶[:密碼]參數解密密碼,但我不能覆蓋它的值解密部分已經工作我測試了它在我的rails控制檯上。 –