1

私はレールの下で作業しており、初心者として、セッション機能がどのように機能するかを理解しようとしています。私は自分のセッションをアクティブな記録の下に置きましたが、これを行うと:

    @request = Facebook::Request.parse_signed_request(params[:signed_request],
    Settings.facebook.app_secret) 
    puts session
    @admin = Admin.find_by_fb_userid(@request["user_id"])
    session[@request["user_id"]] = @admin ? @admin : nil

私のセッションは引き続き表示されます:

{}

ご協力いただきありがとうございます !

4

3 に答える 3

2

セッションの仕組み

HTTP はステートレス プロトコルです。これは、通信が要求と応答の独立したペアで構成されるように、各要求を以前の要求とは無関係の独立したトランザクションとして扱うことを意味します。

ステートレス プロトコルでは、サーバーが複数の要求の間、各通信パートナーに関するセッション情報またはステータスを保持する必要はありません。

このプロトコルは、リクエスト間でユーザーのデータを保存する手段を提供しません。

したがって、 を使用しますSessions。これにより、複数のリクエストをクライアントとサーバー間の会話に連鎖dataさせることができるため、一時的に を保持します。

Sessionであるhashため、通常のハッシュのようにデータをセッションに追加できます。

たとえば、新しい注文をセッションに追加するには、次のようにします。

例: OrdersController

def new
@order = current_user.orders.create   # creates a new order for current_user
session[:order] = @order.to_params    # adds order information to the session.
end

セッションはあらゆる種類のデータを保存できますが、サードパーティのユーザーはセッションに保存されている情報を簡単に解読できるため、速度セキュリティstringの両方のためにデータをできるだけ小さく保つことをお勧めします。

アップデート

デフォルトでsession dataは として保存されますcookiesが、 を使用してデータベースRails に構成したり、とを使用してメモリ内ストレージに構成したりできます。それぞれのアプローチには長所と短所があります。session storageActiveRecordStoreRedisRedis store

于 2013-08-27T11:47:11.380 に答える
0

わかりました私のせいは、私が推測するFacebookアプリに取り組んでいたことでした。リフレッシュするたびに、ピアによってセッションがリセットされます。

しかし、プロセスを続けると、すべてがすぐに機能しました。

また、セッションがステートレス プロトコルであっても、セッション全体でセッションをアクティブに保つために使用されるストレージを介して使用されます。

PHP やすべての言語のように

于 2013-08-27T13:22:15.277 に答える