【发布时间】:2015-12-21 21:24:03
【问题描述】:
我制作了一个新的 rails-api 应用程序,其中集成了 devise_auth_token。目前注册,忘记密码正在工作。但无法重置密码。
邮件中发送的确认 url 给出了 success:false 响应。
以下是确认网址
这里是重置邮件的服务器日志
在 2015 年 9 月 24 日 14:41:21 +0530 开始 GET "/auth/password/edit?config=default&redirect_url=foo&reset_password_token=[FILTERED]" for ::1 由 DeviseTokenAuth::PasswordsController#edit 处理为 /
参数:{"config"=>"default", "redirect_url"=>"foo", "reset_password_token"=>"[FILTERED]"} 不允许的参数:配置, redirect_url 用户负载 (0.2ms) SELECTusers.* FROMusersWHEREusers.reset_password_token= '0b3dfdf3a80dce289df8c2cb16c528614b302534264e85e747c4f6b51583da15' ORDER BYusers.idASC LIMIT 1 Completed 404 Not Found in 5ms (浏览量:0.3ms | ActiveRecord:0.2ms)这是通过密码发送的确认电子邮件 重置。
Started POST "/auth/password?email=user@user.com&redirect_url=foo" for ::1 at 2015-09-24 14:04:05 +0530 Processing byDeviseTokenAuth::PasswordsController#create as / 参数: {"email"=>"user@user.com", "redirect_url"=>"foo"} 未经许可 参数:redirect_url 未经许可的参数:redirect_url 用户 加载 (66.5ms) SELECT
users.* FROMusersWHERE (BINARY uid = 'user@user.com' AND provider='email') ORDER BYusers.idASC LIMIT 1 用户负载 (9.8ms) SELECTusers.* FROMusersWHEREusers.reset_password_token= '0b3dfdf3a80dce289df8c2cb16c528614b302534264e85e747c4f6b51583da15' ORDER BYusers.idASC LIMIT 1 (0.1ms) BEGIN SQL (17.7ms) 更新users设置reset_password_token= '0b3dfdf3a80dce289df8c2cb16c528614b302534264e85e747c4f6b51583da15',reset_password_sent_at= '2015-09-24 08:34:05',updated_at= '2015-09-24 08:34:05' 其中users.id= 6 (63.9ms) 提交
渲染 /home/anjan/.rvm/gems/ruby-2.2.3/gems/devise_token_auth-0.1.34/app/views/devise/mailer/reset_password_instructions.html.erb (16.2 毫秒)Devise::Mailer#reset_password_instructions:已处理的出站邮件 424.3毫秒
发送邮件到 user@user.com (64.4ms) 日期:2015 年 9 月 24 日星期四 14:04:06 +0530 发件人:account@qzick.com 回复:account@qzick.com 收件人:user@user.com 邮件 ID: 主题:重置 密码说明 Mime-Version: 1.0 Content-Type: text/html; charset=UTF-8 内容传输编码:7 位电子邮件:user@user.com 提供者:电子邮件重定向 url:foo 客户端配置:默认
你好 user@user.com!
有人请求了一个链接来更改您的密码。你可以做 通过下面的链接。
改变 我的密码
如果您没有提出此要求,请忽略此电子邮件。
您的 在您访问上面的链接并创建一个新的之前,密码不会更改 一个。
在 979 毫秒内完成 200 次 OK(查看次数:0.6 毫秒 | ActiveRecord:158.1 毫秒)
大家会很感激这方面的帮助。 甚至在邮件中发送的令牌与生成的令牌不同是否有任何问题。?应该是这样吗?
下面是我的用户模型。
{ “令牌”=> “$ 2A $ 10 $ l766Mu / s8IUIHi9r3sz40ODQk2R.YDo283JQ.82Lijb3fjJ5Unqgq”, “有效期”=> 1444283710}, “H2Cqp2kIt56BYikqXp1HgA”=> { “令牌”=>“$ 2A $ 10 $ upMCA8ZKLXvq9VjVaz2Vp.sZu7zr2lSTCFrxWnBmg4wC2gQrW9sIW ", "expiry"=>1444293849}}, created_at: "2015-09-24 05:55:10", updated_at: "2015-09-24 08:44:09">
这是我的用户模型文件如下
class User < ActiveRecord::Base
# Include default devise modules.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable
include DeviseTokenAuth::Concerns::User
#Deleted ":confirmable," from above
end
以下是我的架构。
ActiveRecord::Schema.define(version: 20150921074353) do
create_table "users", force: :cascade do |t|
t.string "provider", limit: 255, default: "email", null: false
t.string "uid", limit: 255, default: "", null: false
t.string "encrypted_password", limit: 255, default: "", null: false
t.string "reset_password_token", limit: 255
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", limit: 4, default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip", limit: 255
t.string "last_sign_in_ip", limit: 255
t.string "confirmation_token", limit: 255
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email", limit: 255
t.string "name", limit: 255
t.string "nickname", limit: 255
t.string "image", limit: 255
t.string "email", limit: 255
t.text "tokens", limit: 65535
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "users", ["email"], name: "index_users_on_email", using: :btree
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
add_index "users", ["uid", "provider"], name: "index_users_on_uid_and_provider", unique: true, using: :btree
end
我的 PasswordController 文件如下:
class PasswordController < ApplicationController
config.action_controller.action_on_unpermitted_parameters = :log
end
【问题讨论】:
-
如果可能的话,您能否发布您的用户模型文件?检查指定的设计选项是否正确......
-
@MarcoSandrini 请检查我已编辑问题并将我的用户模型文件包含在底部。非常感谢您的帮助
-
好的,现在我们需要对用户表进行更彻底的转储,因为从您发布的内容来看,用户表似乎不包含 reset_password_token 列...
-
@MarcoSandrini 已在底部添加了我的 schema.rb 文件,请您看一下。再次感谢
-
再次,一切看起来都不错。你检查过这个问题吗? github.com/lynndylanhurley/devise_token_auth/issues/160
标签: ruby-on-rails ruby authentication devise rails-api