我已遵循本文档,允许用户使用参数“登录”使用用户名或电子邮件地址登录:
我的数据库包含三个用户。无论何时使用哪个帐户,无论何时尝试登录,它都是第一个始终登录的用户。我认为原因某种程度上与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,这应该是可行的,因此,如果您能发现与此问题相关的任何错误,请告诉我。