0

はじめに:お誕生日おめでとうございます。Railsでビルドし、fb_graphと呼ばれるrubyAPIラッパーを使用しています。fb_graphの作成者は、実用的なサンプルアプリケーションfb_graph_sampleを丁寧に提供してくれました。

それをいじってみたところ、セッション/Cookieがどのように機能するのかわかりません。たとえば、次のコードを確認してください。

def require_authentication
  authenticate Facebook.find_by_id(session[:current_user])
rescue Unauthorized => e
  redirect_to root_url and return false
end

def authenticate(user)
  raise Unauthorized unless user
  session[:current_user] = user.id
end

session [:current_user]はどこから来たのですか?

config / initializers / session_store.rbの下で、

FbGraphSample::Application.config.session_store :cookie_store, :key => '_fb_graph_sample_session'

そこで、Chromeインスペクターツールを使用してデプロイしているローカルホストのCookieを確認します。値、ドメイン、パス、有効期限、サイズ、httpなどの_fb_graph_sample_sessionが表示されます...

session [:current_user]がどのように発生するのかまだわかりませんか?development.sqlite3ファイルを見ると、Facebookモデルのデータは1つだけです。idは1なので、[:current_user]は1であり、コードは「authenticate Facebook.find_by_id(1)」を呼び出していると思います。

session [:current_user]が1に変換される方法を誰かが説明できますか?サインインアウトに関するrailstutorial.orgの章を読みました。これにより、セッションコントローラーが作成されますが、fb_graph_sampleアプリにセッションコントローラーがありません。

ありがとう、

4

1 に答える 1

0

私は認証メソッドに設定されています:

  session[:current_user] = user.id

アプリはCookieベースのセッションストアを使用しており、ユーザーがCookieにログインすると(特別なハッシュと考えてください)、ブラウザーに書き込まれます。セッションはほとんどハッシュとして使用します。上記のように設定するか、取得することができます。

<%= "logged in as #{User.find(session[:current_user]).name}" %>
于 2012-05-21T20:31:29.573 に答える