问题标签 [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.

0 投票
2 回答
3616 浏览

ruby - 设计重置密码令牌无效

控制器

用户.rb

user_mailer.rb

reset_password_instructions.html.erb

此时,当管理员手动创建用户时,Password reset链接将转到电子邮件地址,我可以看到使用MailCatcheror letter_openerhttp://lvh.me:3000/users/password/edit?reset_password_token=6a8bc4683fc9e5dfcc789f94f9b6bd2b1c44fd857f13662d0f0d1f6212022f81

我点击了链接,它成功地让我编辑了密码页面。当我提交表单时,验证失败并Reset password token is invalid显示消息。

我在这里想念什么......

更新:

我的 Development.rb 看起来像:

0 投票
0 回答
819 浏览

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.):因为它将它视为用户属性。

有谁知道如何在工作流程中克服这个问题?

0 投票
1 回答
460 浏览

ruby-on-rails - 当 devise_for 路由在范围内时重置用户密码

在我的应用程序中,所有路由都限定为一个区域设置,该用户已选择如下:

当我想发送重置密码指令User.find(1).send_reset_password_instructions时,有一个问题:

如何传递语言环境以便发送重置令牌?

0 投票
1 回答
404 浏览

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 文件

0 投票
1 回答
1254 浏览

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:

我犯了同样的错误:

0 投票
0 回答
423 浏览

ruby-on-rails-4 - 发送给用户进行密码重置的电子邮件说明中缺少 redirect_url

我正在尝试构建用于密码重置的 api url。devise_token_auth宝石。根据这里提到的用法,POST 请求/api/v1/auth/password需要参数emailredirect_url. 匹配电子邮件参数的用户将收到有关如何重置密码的说明。redirect_url 是用户在访问电子邮件中包含的链接后将被重定向到的 URL。但是,我在电子邮件中收到以下用于密码重置的 URL,其中redirect_url缺少参数,仅存在令牌。

这是邮递员的api截图。 在此处输入图像描述

以下是 development.log 中的一条日志,表明该参数是不允许的。为发送电子邮件而创建的作业包含如下所示的重定向 redirect_url,但实际电子邮件中不存在

以下是我的控制器中的代码:

Delayed::Job.first.handler包含以下条目:

从下面粘贴的 development.log 更新日志:

0 投票
2 回答
8633 浏览

ruby-on-rails-4 - Errno::ECONNREFUSED - 连接被拒绝 - “localhost”端口 25 的连接(2):

我正在尝试使用设计在 rails 4 中使用动态电子邮件服务器设置重置密码。

但是遇到同样的错误,可能是什么问题,任何帮助都会非常有帮助,谢谢:) 在此处输入图像描述

0 投票
2 回答
115 浏览

ruby-on-rails - 是否可以限制每个用户在一段时间内为可恢复的设计而发送的电子邮件数量?

是否可以限制每个用户在一段时间内为可恢复的设备发送的电子邮件数量?如何防御恶意请求?

0 投票
1 回答
754 浏览

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

0 投票
1 回答
359 浏览

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然后取消哈希令牌并尝试找到用户。这会失败,因为未散列的令牌与数据库中的令牌不匹配(因为该令牌一开始就已经未散列)。

我的问题分为三部分:

  1. 在电子邮件(例如密码重置电子邮件)中发送未经哈希处理的令牌有哪些安全隐患?
  2. 我假设发送未散列的令牌是一个坏主意。如果是这样,我可以通过覆盖来解决这个问题,PasswordsController#create以便我可以拦截散列和未散列的令牌并将两者都保存到数据库中,从而使我的邮件代码可以使用散列的令牌?在尝试这种方法之前,我应该注意哪些安全隐患?
  3. 有没有什么方法可以在渲染我的电子邮件模板之前获取未散列的令牌并对其进行散列,这样我就可以避免一个 hacky 解决方法,例如将其保存到数据库中?