关于如何在Omniauth中启用“记住我”,似乎存在一些混淆。
根据这个wiki,您需要在OmniauthCallbacksController中添加以下内容:
remember_me(user)
另一方面,根据这个问题,你只需要这样做:issue。
user.remember_me = true
另外,根据这里的建议,使 remember_me 默认为 true,您只需将以下内容添加到您的 User.rb 文件中即可。
def remember_me
true
end
我不确定哪一个是正式答案,而且这三个都没有对我起作用。它只在 Mac 上的 Chrome 中有效,但在 Firefox Mac 和 Windows 的 Chrome 中无效。不确定发生了什么。
我的代码如下:
# -*- encoding : utf-8 -*-
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
include Devise::Controllers::Rememberable
def all
omniauth = request.env["omniauth.auth"]
auth = Authentication.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])
if auth
auth.update_with_omniauth omniauth
auth.save!
# ???
remember_me auth.user
auth.user.remember_me = true
if user_signed_in?
redirect_back_or settings_path(current_user)
else
sign_in_and_redirect auth.user, event: :authentication
end
else
if user_signed_in?
current_user.build_auth(omniauth).save!
redirect_back_or settings_path(current_user)
else
session["devise.omniauth"] = omniauth.except('extra')
redirect_to new_user_registration_url
end
end
end
alias_method :facebook, :all
alias_method :twitter, :all
end