Ruby on rails 设计令牌身份验证重置密码出现未经授权的错误
我正在使用Ruby on rails 设计令牌身份验证重置密码出现未经授权的错误,ruby-on-rails,reactjs,devise-token-auth,Ruby On Rails,Reactjs,Devise Token Auth,我正在使用designetokenauthgem构建railsapi,以便使用令牌进行身份验证。 每当我试图通过单击“忘记密码”来重置密码时,表单就会显示为提供电子邮件,当发送电子邮件时,会向用户提供重置链接,用户会在此前端页面上提交表单,该页面会向API:PUT/auth/password发送一个带有密码和密码确认参数的请求。之后,我收到一个错误,说已完成。 这是我的代码 function regeneratePassword(response, password, confirmPasswo
designetokenauthgem
构建railsapi,以便使用令牌进行身份验证。
每当我试图通过单击“忘记密码”来重置密码时,表单就会显示为提供电子邮件,当发送电子邮件时,会向用户提供重置链接,用户会在此前端页面上提交表单,该页面会向API:PUT/auth/password
发送一个带有密码和密码确认参数的请求。之后,我收到一个错误,说已完成。
这是我的代码
function regeneratePassword(response, password, confirmPassword) {
const requestOptions = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'access-token': response.headers['access-token'],
'client': response.headers['client'],
'token-type': response.headers['token-type'],
'uid': response.headers['uid'],
'expiry': response.headers['expiry']
},
body: JSON.stringify({"password": password, "password_confirmation": confirmPassword})
};
return fetch(`${baseURL.URL}${baseURL.PORT}/auth/password/`, requestOptions).then(handleResponse);
}
Started PUT "/auth/password/" for ::1 at 2018-03-20 11:06:28 +0545
Processing by DeviseTokenAuth::PasswordsController#update as */*
User Load (1.6ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "manager2@gmail.com"], ["LIMIT", 1]]
CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "manager2@gmail.com"], ["LIMIT", 1]]
[active_model_serializers] Rendered ActiveModel::Serializer::Null with Hash (0.12ms)
Completed 401 Unauthorized in 7ms (Views: 1.6ms | ActiveRecord: 1.7ms)
我在终端中遇到错误:
function regeneratePassword(response, password, confirmPassword) {
const requestOptions = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'access-token': response.headers['access-token'],
'client': response.headers['client'],
'token-type': response.headers['token-type'],
'uid': response.headers['uid'],
'expiry': response.headers['expiry']
},
body: JSON.stringify({"password": password, "password_confirmation": confirmPassword})
};
return fetch(`${baseURL.URL}${baseURL.PORT}/auth/password/`, requestOptions).then(handleResponse);
}
Started PUT "/auth/password/" for ::1 at 2018-03-20 11:06:28 +0545
Processing by DeviseTokenAuth::PasswordsController#update as */*
User Load (1.6ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "manager2@gmail.com"], ["LIMIT", 1]]
CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."uid" = $1 LIMIT $2 [["uid", "manager2@gmail.com"], ["LIMIT", 1]]
[active_model_serializers] Rendered ActiveModel::Serializer::Null with Hash (0.12ms)
Completed 401 Unauthorized in 7ms (Views: 1.6ms | ActiveRecord: 1.7ms)
如果更新控制器代码,则更容易找到原因。请检查列表1。您能在控制器的请求头中看到访问令牌吗?2.在更改密码之前,是否已完成通过访问令牌对用户进行身份验证?3.用户是否存在?4.用户激活了吗?