Web サイトに配置できるウィジェットを作成する Rails アプリを開発しています。アプリにログインしているユーザーに (別のホストの Web サイトで) ウィジェットが表示されるときに、追加の管理オプションを表示したいと思います。
ユーザーがアプリにログインしているかどうかを確認する最も簡単な方法は何ですか?
ユーザーがログインしたときにIPを保存し、ウィジェットコントローラーに送信されたリクエストのIPを比較することを考えていました。
Web サイトに配置できるウィジェットを作成する Rails アプリを開発しています。アプリにログインしているユーザーに (別のホストの Web サイトで) ウィジェットが表示されるときに、追加の管理オプションを表示したいと思います。
ユーザーがアプリにログインしているかどうかを確認する最も簡単な方法は何ですか?
ユーザーがログインしたときにIPを保存し、ウィジェットコントローラーに送信されたリクエストのIPを比較することを考えていました。
私はOmniauth Railscast Episodeに従い、セッション変数と SessionsController を使用して、ユーザーがログインおよびログアウトするときにセッションを作成および破棄しています。
class SessionsController < ApplicationController
def create
# create user if new user, or find user account if returning user.
session[:user_id] = user.id
redirect_to root_url # or wherever
end
def destroy
session[:user_id] = nil
redirect_to root_url # or wherever
end
end
次に、アプリケーション コントローラーで、
class ApplicationController < ActionController::Base
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
end
if current_user
その後、ユーザーがログインしているかどうかを 経由で簡単に判断できますsession[:user_id]
。
IP は欺瞞的である可能性があります。クッキーを試してみてください。
編集: 積極的に欺く方法 (つまり、スプーフィング/Tor) だけでなく、2 人が同じパブリック IP から別のサイトにいる場合、誤った相関関係があります。