ruby-on-rails - 设计禁止登录参数的消毒剂
问题描述
我已按照此文档允许用户使用参数“登录”以用户名或电子邮件地址登录:
我的数据库包含三个用户。每当我尝试登录时,无论是哪个帐户,它都是第一个始终登录的用户。我认为原因与设计会话控制器中允许的 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
检查上面注释中标记的点显示的参数将给出(注意“允许:假”):
<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这应该可以工作,所以如果您能发现与此问题相关的任何错误,请告诉我。
解决方案
推荐阅读
- wso2 - WSO2 ESB.5.0.0 开放并行连接限制
- python - 当我想使用名称的一小部分时如何调用文件名?
- sql - 在一个结果行中选择具有给定时间间隔的 id 历史记录的行
- background-process - python 2.7.5:在后台运行整个函数
- eloquent - 我可以强制 Eloquent 模型 created_at 使用 unix_timestamp() 作为 DB 服务器时间来对抗时间漂移
- ruby-on-rails - Ruby on Rails - ActionCable - : undefined method `redis_connection_for_subscriptions' for #
我最近开始使用 ActionCable 并设法让多个频道正常工作,但是在测试频道时我遇到了问题。
示例频道 - 订阅方法:
- variable-assignment - 匈牙利方法 - 3 选择分配
- python - 使用 dask 监控 xarrays 拆分应用组合的进度
- c# - 如何通过 C# 客户端在 Azure DevOps 中创建代理池?
- python - C++中的SDK需要在python中调用这些函数