在请求之间存储Omniauth auth数据?

时间:2012-07-12 19:25:05

标签: ruby-on-rails-3 omniauth

  1. 用户使用传统电子邮件和密码登录。
  2. 该用户点击“与Facebook连接”按钮。
  3. 他们使用不同的电子邮件地址与Facebook签名,而不是他们当前登录我网站的电子邮件地址。
  4. 我向他们展示了一个页面,询问他们是否要更新他们的传统登录信息以使用他们的Facebook电子邮件(还允许我统一帐户并使用Facebook填写任何缺失的数据)。
  5. 问题出在第4步,因为omniauth回调网址sessions#create的{​​{1}}存储了身份验证。

    request.env['omniauth.auth']的相关位:

    sessions_controller

    ...它将我带到我的用户控制器,它显示一条可爱的小消息,提示用户(a)以另一个用户身份登录我的网站,或(b)更新他们的帐户以使用此Facebook信息。除了我无法再访问def create return link_accounts if signed_in? if params[:email] create_session_from_login elsif env['omniauth.auth'] create_session_from_facebook else redirect_to login_path, alert: "Couldn't login!" end end private def link_accounts auth = env['omniauth.auth'] redirect_to user_link_accounts_path current_user unless current_user.email == auth[:info][:email] end

    如何在请求之间保留身份验证信息?它对于request.env['omniauth.auth']来说太大了......我也希望它能够在用户对页面执行操作之后找到它(例如,单击链接 - 所以我可以在服务器端发出一个请求在实际的FB auth发生之后),但我不想将它存储在页面上......

0 个答案:

没有答案