2

Facebook signed_requestによると、安全な Cookie を作成し、自分だけが知っている Facebook アプリの秘密で署名したいと考えています。

Facebook から送信された signed_request をデコードする Ruby メソッドを既に実装しています。

これは機能しますが、今度はrunwithfriendsと同じように、同じ署名手順を使用する Cookie をクライアントに送り返したいと考えています。

ラックのソース コードを調べたところ、この機能が提供されているようです。

しかし、シナトラでこれを行う方法を考えています。のように見えますset_cookieset_cookie_headers、シークレットを受け入れないようです。だから、ラックでやらないといけないと思う。私はそれを試して、また報告します。

その間、Sinatra Bookは、セッション ベースの Cookie を提供すると述べています。

それで、クッキーを設定することの違いは何ですか:

set_cookie("u", 123)

またはセッション変数を設定します。

session["u"] = 123

Sinatra & Rack のソース コードを調べてみました。考えがある。特定のデフォルト機能を除けば、それらはほとんど同じだと思います。

4

1 に答える 1

2

1 つのオプション。

このような Facebook アプリには、サーバー側の「セッション」ソリューションを使用することをお勧めします。たとえば、 https://github.com/jodosha/redis-storeは、シリアル化されたオブジェクトを保存できる Sinatra の「キャッシュ」オブジェクトを提供します。また、メモリが過剰に蓄積されないように、redis キーの有効期限を設定できます。 . ユーザーが使用しているコンピューター/ブラウザーに関係なく、セッションが常に同じになるように、キャッシュのキーとして Facebook の uid を使用することをお勧めします。また、この方法では、Safari や Chrome では機能しない iframe での Cookie の設定について心配する必要がありません。

フィルター前:@session = cache.fetch("session-#{@uid}") { {} }

フィルタ後:cache.set("session-#{@uid}", @session)

于 2011-01-21T03:35:12.440 に答える