设计消毒器不允许sign_in的参数

时间:2019-07-09 10:46:09

标签: ruby-on-rails devise

我已遵循本文档,允许用户使用参数“登录”使用用户名或电子邮件地址登录:

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign_in-using-their-username-or-email-address

我的数据库包含三个用户。无论何时使用哪个帐户,无论何时尝试登录,它都是第一个始终登录的用户。我认为原因某种程度上与Devise会话控制器中sign_in的允许参数有关:

class Users::SessionsController < Devise::SessionsController

  before_action :configure_sign_in_params, only: [:create]

  def create
    # Inspect params here...
    resource = warden.authenticate!(auth_options)
    sign_in(resource_name, resource)
    render json: {success: true,
                  jwt: current_token,
                  message: "Authentication successful" }
  end

  protected

  def configure_sign_in_params
    devise_parameter_sanitizer.permit(:sign_in, keys: [:login, :password])
  end

  ...
end

检查上面注释中标记的点处显示的参数将给出(请注意“ permitted:false”):

<ActionController::Parameters {"user"=>{"login"=>"second_user", "password"=>"secret"}, "controller"=>"users/sessions", "action"=>"create", "session"=>{"user"=>{"login"=>"second_user", "password"=>"secret"}}} permitted: false>

据我所知,根据https://www.rubydoc.info/github/plataformatec/devise/Devise/ParameterSanitizer,这应该是可行的,因此,如果您能发现与此问题相关的任何错误,请告诉我。

0 个答案:

没有答案