1

webapp2 アプリケーションには次の要件があります。ユーザーが自分のマシンまたはブラウザーを離れた場合、そのユーザーの以前の認証セッションは終了する必要があります。

ログイン時に user オブジェクトに remote_addr を格納することで、ユーザーが別のマシンからログインするときにこれを行うことができます。ユーザーのセッションが要求されると、ログイン時にユーザーの remote_addr に対して要求からの remote_addr をチェックします。

ユーザーがプロキシサーバーの背後にいる場合は機能せず、ユーザーが別のブラウザーを使用している場合も機能しないため、このソリューションには満足していません。

webapp2 はセッション ID をどこかに保存するので、それを使用して、ユーザーが新しいセッションでログオンしたかどうかを確認できますか?

4

3 に答える 3

0

すでに行っていることを変更します。ユーザーがログインするときに、一意/ランダムなトークンを作成してユーザー オブジェクトに保存し、それを使用してブラウザーに Cookie を設定します。ユーザーのセッションが要求されたら、(要求 Cookie とユーザー オブジェクトからの) 2 つのトークンが一致することを確認し、一致しない場合は、セッションを書き込みます。

これはまったく同じですがremote_addr、ログイン時に生成して Cookie として設定するランダム トークンを使用する代わりに使用します。

于 2012-09-24T09:58:58.967 に答える
0

ブラウザー セッションで初めて Web サイトを開くと、サイト セッションが作成されます。

彼がログインしたら、セッション ID をデータベースに保存するだけです。アクティブなログインを備えた素敵なテーブルが必要です。彼が後でブラウザを閉じて再起動した場合にログインしたままにしたい場合は、ブラウザに Cookie を設定することもできます。明らかに、Cookie が存在する場合は、セッション ID を Cookie 内の ID に変更します。

Cookie はブラウザ間で共有されないため、この場合、彼が新しいブラウザからログインすると、アクティブなログイン テーブルのセッション ID が変更されます。

また、現在のセッションがまだアクティブであるかどうかを 5 分ごとに確認し、アクティブでない場合はログアウトする小さな ajax が必要です。

于 2012-09-26T15:45:00.923 に答える
-1

http://webapp-improved.appspot.com/api/webapp2_extras/sessions.htmlは、「セッション ID」について説明します。

webapp2-for-authentication-and-loginでの Nick Johnson の回答、およびndb library を使用
したデータストアの実装例も参照してください。

于 2012-09-22T16:21:40.633 に答える