私は 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 ...しかし、よりシンプルなソリューションを望んでいます。
ありがとう
解決:
「トークン」列が 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