0

私の GAE プロジェクト (A、B、C など) にはいくつかのモジュールがあるとします。ユーザーのデータベースとセッションを共有します。

例: モジュール A は (Cookie を介して) ログイン/ログアウト アクションを管理し、モジュール B、C は他のアクションを処理します。参考までに、これらのモジュールは PHP と Python の両方で開発されています。

ここで、3 つのモジュールすべてでユーザーとセッションの確認コードを作成したくありません。

とにかく、リクエストごとに3つのモジュールすべての前に実行されるミドルウェアを置くことはできますか? X など: ユーザーがログインしている場合は、ユーザー ID と一部のユーザー情報を設定するための各要求のヘッダーが追加されます。

IE:上記のアイデアを実装できるようになった後。各リクエストは、以下の 3 つのケースで 1 を通過します。

  • X、A
  • X、B
  • X、C

あなたは何を言っていますか?ありがとう

更新 1: 詳細情報

ミドルウェアとは、リクエストミドルウェアのことです。

X がミドルウェアの場合、リクエストがアプリ (またはモジュール) に渡される前に実行され、次のようなリクエストのみが変更されます。

  • いくつかの認証アクションを実行します
  • いくつかのヘッダーを追加します。
    • X-User-Id: 許可されたユーザー ID の場合
    • X-User-Scopes: 許可されたユーザーのスコープ用
  • など...

そしてもちろん、内部モジュールの言語 (PHP または Python または Java または ...) に依存しません。

X ミドルウェアは で構成する必要がありますapp.yaml

4

1 に答える 1

0

私がそのようなシナリオにアプローチした方法 (Python のみのプロジェクトでは、php についてはドンノ) は、カスタム ハンドラーを使用することでした (セッション サポートに既に使用していた webapp2.RequestHandler を継承します)。カスタマイズされた dispatch() メソッドでは、ユーザー情報が収集され、ハンドラー オブジェクト自体に格納されます。

ハンドラーの実装は、バージョン管理された 1 つのファイルにのみ存在しますが、ハンドラーを参照する各モジュールで (GAE アクセシビリティのために) シンボリック リンクされています。このようにして、ユーザーとセッション検証コードの複数の独立したコピーを管理する必要がなくなります。

于 2015-07-14T04:17:11.663 に答える