3

Web サイトに配置できるウィジェットを作成する Rails アプリを開発しています。アプリにログインしているユーザーに (別のホストの Web サイトで) ウィジェットが表示されるときに、追加の管理オプションを表示したいと思います。

ユーザーがアプリにログインしているかどうかを確認する最も簡単な方法は何ですか?

ユーザーがログインしたときにIPを保存し、ウィジェットコントローラーに送信されたリクエストのIPを比較することを考えていました。

4

2 に答える 2

2

私は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]

于 2013-09-20T01:02:42.577 に答える
2

IP は欺瞞的である可能性があります。クッキーを試してみてください。

編集: 積極的に欺く方法 (つまり、スプーフィング/Tor) だけでなく、2 人が同じパブリック IP から別のサイトにいる場合、誤った相関関係があります。

于 2013-09-20T00:50:27.997 に答える