【发布时间】:2011-05-05 12:33:12
【问题描述】:
我已将 Devise(在 Rails 3 上)设置为使用 Basecamp 样式的子域身份验证。在这种模式下,用户可以使用相同的电子邮件地址在不同的子域下注册两次。
例如:
class User < ActiveRecord::Base
belongs_to :account
end
class Account < ActiveRecord::Base
# subdomain attribute stored here
end
用户 1 在 company1.myapp.com 上注册,电子邮件地址为 bob@acme.com
用户 2 在 company2.myapp.com 上注册,电子邮件地址为 bob @acme.com
(两个用户帐号都由同一个人控制,但属于不同的子域。)
登录工作正常,但标准密码重置仅通过电子邮件地址查找,因此您只能重置 用户 1 的密码。我想做的是考虑请求子域,因此从 company2.myapp.com/password/new 重置密码将重置 用户 2 的密码。
Devise 使用 find_first 方法查找用户,我认为该方法不接受连接,因此我不能包含 :account => {:subodmain => 'comapny2'} 条件。
我可以重新实现send_reset_password_instructions 来手动查找用户记录,但感觉很麻烦,我也需要为send_confirmation_instructions 这样做。
有没有更好的办法?
【问题讨论】:
标签: ruby-on-rails devise