- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
与常规设计 gem 的 this question 类似,使用 devise_token_auth gem 显示相同的结果 - 验证错误在 json 响应中出现两次!?
来自日志:
Processing by DeviseTokenAuth::RegistrationsController#create as JSON
Parameters: {"name"=>"Mickey Mouse", "email"=>"mickeymouse@gmail.com", "password"=>"[FILTERED]", "confirmPassword"=>"[FILTERED]", "confirm_success_url"=>"http://localhost:4200/register", "registration"=>{"name"=>"Mickey Mouse", "email"=>"mickeymouse@gmail.com", "password"=>"[FILTERED]", "confirmPassword"=>"[FILTERED]", "confirm_success_url"=>"http://localhost:4200/register"}}
Unpermitted parameters: :confirmPassword, :confirm_success_url, :registration
Unpermitted parameters: :confirmPassword, :confirm_success_url, :registration
(0.2ms) BEGIN
User Exists (0.9ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "mickeymouse@gmail.com"], ["LIMIT", 1]]
(0.8ms) SELECT COUNT(*) FROM "users" WHERE "users"."provider" = $1 AND "users"."email" = $2 [["provider", "email"], ["email", "mickeymouse@gmail.com"]]
(0.3ms) ROLLBACK
Completed 422 Unprocessable Entity in 247ms (Views: 0.7ms | ActiveRecord: 6.9ms)
请注意,unpermitted_parameters 行显示了两次 - 这似乎表明有些奇怪(这些行不会通过 Postman 显示)。
我的用户模型没有标准指南中的任何额外内容,因此我的模型绝对没有 2 个唯一性或存在性验证,并且检查 gem 的源代码它似乎也没有。
这是模型:
class User < ActiveRecord::Base
# Include default devise modules.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:confirmable, :omniauthable
include DeviseTokenAuth::Concerns::User
end
如果我从 Postman 调用这个端点,我会得到相同的结果,这是返回的 json:
{
"status": "error",
"data": {
"id": null,
"account_id": null,
"provider": "email",
"uid": "",
"name": null,
"nickname": null,
"image": null,
"email": "mickeymouse@gmail.com",
"created_at": null,
"updated_at": null
},
"errors": {
"email": [
"has already been taken",
"has already been taken"
],
"full_messages": [
"Email has already been taken",
"Email has already been taken"
]
}
}
Rails API 是使用 angular2-token 库从 Angular2 调用的,但这显然不是问题(给出来自 Postman 的结果)。
我怎样才能找到这个问题的原因,或者我怎样才能对 gem 进行猴子修补以消除第二个错误?
更新
如果我从模型中删除 :validatable
并进行我自己的验证:
validates_uniqueness_of :email
我得到了相同的结果,这很奇怪。
最佳答案
编辑:此问题已修复,只需升级您的 gem! > v0.1.43.beta1
我找到了 the issue在github上有报道。
解决方法是删除 :validatable(电子邮件的唯一性仍会触发),然后滚动您自己的密码确认验证,如该问题所示(请参阅 stephanebruckert 那里的回复)并在此处转载:
引用:“validatable 验证了电子邮件和密码,这就是为什么我们不应该在模型中做任何这些,否则它会被验证两次。在我的例子中,只有电子邮件被验证了两次,而我没有添加任何额外的在我的模型中进行验证。所以我最终删除了 validatable 并对 password 和 password_confirmation 进行了自己的验证:“
validates_presence_of :password, on: :create
validates :password,
length: { minimum: 8 },
allow_blank: true
validate :password_complexity
validates_confirmation_of :password
validates_presence_of :password_confirmation, if: lambda {| u| u.password.present? }
private
def password_complexity
return unless password
if password.include?(username) || !password.match(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)./)
errors.add(:password, "Must include at least one lowercase letter, one uppercase letter and one digit")
end
end
虽然这确实解决了重复的电子邮件错误,但我现在收到“password_confirmation can't be blank error”...这导致了一个兔子洞,发现 this issue .您需要通读所有内容,但基本上,API 应该不强制存在密码确认值(仅在表单本身中需要):)
关于ruby-on-rails - rails 5.1 : devise_token_auth returns 2 errors when only 1 should be found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46350596/
使用默认的 --api 标签在 rails 5 中创建了一个新的 API,并使用命令安装了 devise_token_auth gemrails generate devise_token_auth:
我有一个 API 需要根据是否有登录用户返回结果。我正在使用 devise_token_auth在 rails 端,ng_token_auth 在客户端(Angular)。 在我的 Controlle
我试图允许在移动设备上使用 token 进行身份验证,同时仍将网络表单用于网络应用程序。我决定使用 devise_token_auth .每当我尝试启动应用程序时,我都会收到错误消息,因为已经定义了
我正在尝试构建一个 rails API,我正在使用 devise_token_auth gem 使用 token 进行用户身份验证。 我设法正确设置了所有内容,但遇到了问题。每当我尝试重置密码时,都会
我有一个与 Devise 一起运行的 Rails 4.1 应用程序以进行身份验证。 对于通过移动应用程序访问,我想使用推荐的 devise_token_auth gem 实现 token 身份验证
我正在同时使用 devise 和 devise_token_auth。我有一个 Ionic 2 应用程序,我正在尝试通过 Facebook 登录。现在,电子邮件/密码身份验证工作正常。这是我的一些代码
我目前正在使用 Rails 5 编写一个 API,使用 devise_token_auth 和 omniauth 作为身份验证策略。 为了检查omniauth身份验证是否有效,我编写了一个请求规范:
我从事的项目(ruby '2.2.0',rails '4.2.3')同时使用标准设计用户管理(用于网页)和 devise_token_auth(用于服务的 API 部分)。一切正常,除非我 inclu
我目前正在构建一个与 ruby-on-rails api 通信的 iOS 应用程序。 API 的用户管理(登录、登录、...)部分由 devise_token_auth gem 处理。 我也在使用
在 devise_token_auth 注册和登录工作正常。但密码重置给出错误。 Missing redirect url. 它在 Password_controller.rb 中的这些行中给出了错误
在尝试向我现有的 Rails 应用程序添加 token 身份验证时,我不断遇到错误,它源于设计 authentication_keys。在我的 Rails 4 应用程序中,我允许用户使用用户名或电子邮
我在使用此 gem 的密码重置功能时遇到问题。 https://github.com/lynndylanhurley/devise_token_auth 这是来自文档。 /password/edit
我对 Ruby 和 Rails 本身还是很陌生,我正在尝试构建一个简单的 Rails API。 我想通过 token 对用户进行身份验证,因此我使用了 devise_token_auth gem。 我
我正在使用带有 devise_token_auth 的 rails-api 进行身份验证。我可以通过以下方式登录而不会出现问题: curl -i http://localhost:3000/api/v
我有一个带有 devise_token_auth gem 的 Rails 5 API认证。 现在我想要为经过身份验证的用户进行个人聊天。我没有 Assets ,因为我使用 API 并且前端在 nati
将 devise_token_auth 和 active_model_serializer 用于 Devise sign_up 方法时,我无法覆盖 Rails 序列化程序。 我想在查询我的 API 时
我目前正在使用 devise_token_auth为我的 Rails API 实现基于安全 token 的身份验证。这个 gem 生成一个带有一些属性的用户模型。在我的用户模型中添加一些自定义属性后,
我在我的 Rails 5 API 应用程序中使用 devise_token_auth gem。为了测试所有设计 token 路由,我使用 Postman。当我尝试在路由“https://localho
我正在编写一个主要通过 API 访问的应用程序,但也有通过 Web 应用程序进行编辑的 View 。 我想在两个平台上创建一个具有身份验证和授权的用户模型。 我无法理解 devise 和 devise
我正在尝试使用 devise_token_auth 登录现有用户版本0.1.38 ,但我正在打 IndexError: string not matched在图书馆的sessions_controll
我是一名优秀的程序员,十分优秀!