gpt4 book ai didi

ruby-on-rails - 密码验证中断设计确认

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:38 24 4
gpt4 key购买 nike

我正在使用设计来管理我的应用程序的用户帐户。到目前为止,一切都运行良好,但我偶然发现了我发现的非常奇怪的行为。基本上发生的事情是我将以下代码添加到我的用户模型中:

validates :password, { confirmation: true, length: { in: 6..20 } } 
validates :username, { uniqueness: true, length: { in: 3..25 } }

乍一看,这似乎工作正常。未能输入有效信息将使用户信息无法保存到数据库中。不幸的是,它以某种方式破坏了设计的电子邮件确认。 Devise 仍会在注册时发送电子邮件,但确认链接不再像以前那样有效。突然发生的事情是他将我发送到我可以重新请求确认信息的页面(尽管根本没有被告知这样做)。他还(通过 Flash 消息)提示说我的密码不能为“空”并且用户没有被保存。这是零意义的,因为甚至在单击确认链接之前就已经保存了用户(也具有有效的密码)。它确实被保存了,因为我发现手动检查数据库表。

我从中了解到,他可能正在尝试更改用户表中的某些列,如 confirmed_email 和 confirmed_at 等。但不知何故,他还试图同时提供一个新密码,这绝对不是他应该做的正在做。为什么他将我重定向到我可以重新发送确认邮件的那个页面也完全超出了我的范围。

我该怎么做才能解决我的问题?我不想使用 :validatable 而是在不完全破坏我的设计的情况下进行自己的验证。以下是一些附加信息:

rails 3.2.12
ruby 1.9.3p392设计 2.2.3

日志:

开始 GET "/users/confirmation?confirmation_token=ojx35QawQdHSWi655mru"for 127.0.0.1 at 2013-06-20 17:01:12 +0200Devise::ConfirmationsController#show as HTML 处理 参数:{“confirmation_token”=>“ojx35QawQdHSWi655mru”} 用户负载 (0.3ms) SELECT "users".* FROM "users"WHERE "users"."confirmation_token"= 'ojx35QawQdHSWi655mru' LIMIT 1 (0.1 毫秒)开始 用户存在 (0.2ms) SELECT 1 AS one FROM "users"WHERE ("users"."username"= 'what the heck' AND "users"."id"!= 22) LIMIT 1 (0.1 毫秒)回滚 渲染设计/共享/_links.erb (0.4ms) 在布局/应用程序中呈现 devise/confirmations/new.html.erb (2.1ms)在 14 毫秒内完成 200 OK( View :9.0 毫秒 | ActiveRecord:0.8 毫秒)

最佳答案

这可能不是你的问题,但设计已经为你验证了密码

config/initializers/devise.rb

config.password_length = 8..128

尝试更改它而不是先将其添加到用户模型中。 (或删除它)

关于ruby-on-rails - 密码验证中断设计确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17213767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com