简介:我正在构建一个自动祝生日快乐的 Facebook 应用程序。我在 Rails 中构建它并使用名为fb_graph的 ruby API 包装器。fb_graph 的创建者慷慨地提供了一个工作示例应用程序fb_graph_sample
在玩弄它之后,我不明白会话/cookies 是如何工作的。例如,查看以下代码:
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'
因此,我查看了 localhost 的 cookie,这是我将其部署为使用 Chrome 检查器工具的地方,我看到 _fb_graph_sample_session 的值、域、路径、过期、大小、http 等...
我仍然看不到 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 应用程序中没有会话控制器。
谢谢,