问题标签 [devise-recoverable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 设计重置密码令牌无效
控制器
用户.rb
user_mailer.rb
reset_password_instructions.html.erb
此时,当管理员手动创建用户时,Password reset
链接将转到电子邮件地址,我可以看到使用MailCatcher
or letter_opener
。
http://lvh.me:3000/users/password/edit?reset_password_token=6a8bc4683fc9e5dfcc789f94f9b6bd2b1c44fd857f13662d0f0d1f6212022f81
我点击了链接,它成功地让我编辑了密码页面。当我提交表单时,验证失败并Reset password token is invalid
显示消息。
我在这里想念什么......
更新:
我的 Development.rb 看起来像:
ruby-on-rails - 设计 Token Auth 在密码重置时需要 current_password
我已config.check_current_password_before_update = :password
启用。因此,当用户更新他/她的密码时,该current_password
字段是必需的。这在实施时会成为一个问题,password reset
因为用户不知道他/她当前的密码。我如何绕过这个并且current_password
在用户没有重置他/她的密码时仍然需要?
除此以外,一切正常,电子邮件发送,/password/edit
返回仅对一个会话启用的正确令牌,但current_password
要求没有任何意义。如果我把它拿走,那么重置密码就可以了,但是如果用户尝试更新他/她的密码,应用程序不会允许它并给出,ActiveRecord::UnknownAttributeError (unknown attribute 'current_password' for User.):
因为它将它视为用户属性。
有谁知道如何在工作流程中克服这个问题?
ruby-on-rails - 当 devise_for 路由在范围内时重置用户密码
在我的应用程序中,所有路由都限定为一个区域设置,该用户已选择如下:
当我想发送重置密码指令User.find(1).send_reset_password_instructions
时,有一个问题:
如何传递语言环境以便发送重置令牌?
ruby-on-rails - Devise Recoverable 说 Rails 4/5 上的电子邮件不能为空白
路线.rb
application_controller.rb
密码/edit.html.erb
呈现的 HTML 看起来不错(post 方法):
成员/passwords_controller.rb
耙路线:
这是我提交填写的“/passwords/edit.html.erb”时的日志 (http://localhost:3000/member/password/edit?reset_password_token=BVE492WU1YqMp6nmxCX4)
我认为路由password_path(resource_name)
不正确。它让我member/passwords#create
想到member/passwords#update
似乎是正确的。
请问,我该如何解决这个问题?
.gem 文件
ruby-on-rails-4 - 设计重置密码未知格式
我使用设计和 simple_token_authentication。查询的基本格式——json。我的路线.rb:
响应请求 localhost:3000/users/reset_password.json 一切正常,它涉及带有链接的电子邮件消息。当您单击链接时,会打开默认视图设计/密码/编辑。输入新密码,点击提交,报错:
ActionController::UnknownFormat in Users::PasswordsController#update
但在控制台中我看到密码已成功更改。
在 passwords_controller.rb 中:
在评论 Amit Sharma 之后更新:
路线.rb:
我犯了同样的错误:
ruby-on-rails-4 - 发送给用户进行密码重置的电子邮件说明中缺少 redirect_url
我正在尝试构建用于密码重置的 api url。devise_token_auth
宝石。根据这里提到的用法,POST 请求/api/v1/auth/password
需要参数email
和redirect_url
. 匹配电子邮件参数的用户将收到有关如何重置密码的说明。redirect_url 是用户在访问电子邮件中包含的链接后将被重定向到的 URL。但是,我在电子邮件中收到以下用于密码重置的 URL,其中redirect_url
缺少参数,仅存在令牌。
以下是 development.log 中的一条日志,表明该参数是不允许的。为发送电子邮件而创建的作业包含如下所示的重定向 redirect_url,但实际电子邮件中不存在
以下是我的控制器中的代码:
Delayed::Job.first.handler
包含以下条目:
从下面粘贴的 development.log 更新日志:
ruby-on-rails - 是否可以限制每个用户在一段时间内为可恢复的设计而发送的电子邮件数量?
是否可以限制每个用户在一段时间内为可恢复的设备发送的电子邮件数量?如何防御恶意请求?
authentication - Devise Token Auth / Angular2-Token, 更新密码, Completed 401 Unauthorized
我在使用 devise_token_auth 恢复密码时遇到问题。和 Angular2 令牌。我已成功收到包含更新密码链接的电子邮件。但是我在提交新密码时收到 401 Unauthorized 响应。
前端。我从 URL 获取令牌urlParams.get('token')
后端响应。
在电子邮件的链接中,我得到以下令牌: reset_password_token=HneZDoKTMCLF3_SLfnxy
当我访问该链接时,用户记录会更新为以下属性:
然后在浏览器 URL 中我得到以下内容token=agejaip2SqOp9nvwE1GAHQ&uid
然后用户记录使用以下属性更新:
在我看来,我在 URL 中返回的令牌不正确。
那些人有想法吗?
抱歉 有点难以解释。
非常感谢。
rails (4.2.4)
devise_token_auth (0.1.34) devise
(= 3.5.1)
angular2-token: 0.2.0-beta.1
ruby-on-rails - 在自定义电子邮件中发送未散列的设计 reset_password_token
我在我的 Rails 4.2 应用程序中使用 Devise 3.5。我已经用自定义 HTML 电子邮件覆盖了所有库存电子邮件。由于我设计电子邮件传递代码的方式,电子邮件模板不可能访问令牌的散列版本,例如reset_password_token
.
我遇到的问题是电子邮件模板只能访问存储在数据库中的未散列令牌。我已经尝试在我的电子邮件模板中使用数据库中未散列的令牌,但是当用户单击该链接时,Devise 会PasswordsController#update
调用resource_class.reset_password_by_token(resource_params)
. Devise::Recoverable然后取消哈希令牌并尝试找到用户。这会失败,因为未散列的令牌与数据库中的令牌不匹配(因为该令牌一开始就已经未散列)。
我的问题分为三部分:
- 在电子邮件(例如密码重置电子邮件)中发送未经哈希处理的令牌有哪些安全隐患?
- 我假设发送未散列的令牌是一个坏主意。如果是这样,我可以通过覆盖来解决这个问题,
PasswordsController#create
以便我可以拦截散列和未散列的令牌并将两者都保存到数据库中,从而使我的邮件代码可以使用散列的令牌?在尝试这种方法之前,我应该注意哪些安全隐患? - 有没有什么方法可以在渲染我的电子邮件模板之前获取未散列的令牌并对其进行散列,这样我就可以避免一个 hacky 解决方法,例如将其保存到数据库中?