当让用户使用Facebook登录时,我会在首次身份验证后创建一个新的设备用户,问题是对于新创建的用户的密码,最好的做法是什么?
1。用随机令牌填充它?
那么,用户如何知道新创建的密码?
一个。我可以给他发一封电子邮件吗? 湾在第一次Facebook身份验证后将其写为flash消息 ?
我知道用户可能不需要密码,因为他总是可以使用Facebook登录,但是,他可能需要更新他的设计用户字段,这将需要密码。
2。把它留空?
然后,任何人都知道电子邮件将能够使用设计登录 登录表格。
第3。显示要求输入密码的模态窗口?
这样做,它会在用户最终访问之前添加一个步骤 网站。
那么,推荐的方法是什么?任何建议?
修改
Ryan Bates on RailsCasts at http://railscasts.com/episodes/236-omniauth-part-2?view=asciicast
将用户重定向到可以修复任何问题的表单,如果在尝试保存新用户时验证失败,他会避免为全新用户呈现密码字段:
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :email %><br />
<%= f.text_field :email %></p>
<% if @user.password_required? %>
<p><%= f.label :password %><br />
<%= f.password_field :password %></p>
<p><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></p>
<% end %>
<p><%= f.submit "Sign up" %></p>
<% end %>
<%= render :partial => "devise/shared/links" %>
但是,当OmniAuth注册用户尝试使用设计登录时会发生什么?
答案 0 :(得分:0)
Ryan Bates在RailsCasts上对此进行了报道,并建议您在使用他们的oauth帐户注册后将其重定向到某个页面。
通过这种方式,您仍然可以以正常方式注册用户,并且您可以验证模型。
我们这样做,以便客户可以与不同的提供商签约,并仍然保持我们的设计注册。
读一读:
http://railscasts.com/episodes/236-omniauth-part-2?view=asciicast
如果这没用,请告诉我,我会看到我们还能为您找到什么