我正在使用omniauth-github gem,我注意到用户保存在会话cookie中:
会话控制器:
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
...
end
你知道在浏览器关闭后保持会话的简单方法吗?
我知道它可以通过与 Devise 的集成来实现:https ://github.com/plataformatec/devise/wiki/OmniAuth:-Overview ...但我希望有一个更简单的解决方案。
谢谢
解决方案:
'token' 列被添加到 User 模型中,然后:
class User < ActiveRecord::Base
before_save :generate_token
def generate_token
self.token = SecureRandom.urlsafe_base64
end
end
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env["omniauth.auth"])
cookies.permanent[:token] = user.token
end
end
class ApplicationController < ActionController::Base
def current_user
@current_user ||= User.find_by_token(cookies[:token]) if cookies[:token]
end
end