1

セッションに問題があります

ユーザーがドロップダウンメニューからsmthを選択した後、その値をセッションに挿入する必要があります。モデルの認証テーブルのデータベースにアクセスするには、その値が必要です(request.varから読み取ると、ログイン/登録フォームに移動するとクラッシュします)。セッションのどこに値を挿入し、どのように(ビュー、コントローラー)挿入しますか。

今のところ私はクッキーを使ってそれを解決しましたが、それは最も安全ではありません。

任意の提案=

ありがとうございました

4

1 に答える 1

5

セッションは、Storageクラスの別のインスタンスです。たとえば、セッションに保存されているものは何でも:

session.myvariable = "hello"

後で取得できます:

a = session.myvariable

言い換えれば、それはすでにそこにあります-それに変数を割り当てるだけです。データベースを使用したい場合は、モデルを介してDBにセッションテーブルを定義する必要があります。web2pyマニュアルからの引用:

たとえば、データベースにセッションを保存するには、次のようにします。

session.connect(request, response, db, masterapp=None)

ここで、dbは開いているデータベース接続の名前です(DALによって返されます)。これは、セッションをファイルシステムではなくデータベースに保存することをweb2pyに通知します。session.connectは、db = DAL(...)の後で、セッションを必要とする他のロジック(Authの設定など)の前に配置する必要があります。

web2pyはテーブルを作成します:

db.define_table('web2py_session',
             Field('locked', 'boolean', default=False),
             Field('client_ip'),
             Field('created_datetime', 'datetime', default=now),
             Field('modified_datetime', 'datetime'),
             Field('unique_key'),
             Field('session_data', 'text'))

cPickledセッションをsession_dataフィールドに格納します。

オプションmasterapp=Noneは、デフォルトで、実行中のアプリケーションのrequest.applicationに名前が含まれるアプリケーションの既存のセッションを取得しようとするようにweb2pyに指示します。

2つ以上のアプリケーションでセッションを共有する場合は、masterappをマスターアプリケーションの名前に設定します。

于 2013-02-07T08:20:52.370 に答える