ホームページ  >  記事  >  バックエンド開発  >  Django サーバーはリモート ユーザーを通じて互いのメソッドを呼び出します

Django サーバーはリモート ユーザーを通じて互いのメソッドを呼び出します

高洛峰
高洛峰オリジナル
2017-03-27 16:47:171817ブラウズ

まず第一に、シナリオは次のとおりです。2 つの Django Web アプリケーションがあり、2 つのアプリケーション間には特定の接続があります。場合によっては、お互いが相手のデータを取得する必要があります。

ただし、アプリケーションには対応する認証メカニズムが必要です。気軽に訪問させないですよね?たとえば、バスに乗るにはカードをスワイプする必要があります(そうです、高齢者カード~~​​~)。ブラウザ ユーザーがログインした後、各リクエストには対応するセッションが存在し、サーバーは使用されたセッションに基づいてユーザーの権限情報を決定できることがわかっています。ただし、サーバー側で使用するのは簡単ではなく、セッションの有効期限などの問題が発生する可能性があります。

そこで、django の公式ドキュメントを確認したところ、django はサーバー間のリモート呼び出しをサポートできるリモート ユーザー メカニズムを提供していることがわかりました。設定に次の設定を追加するだけです:


MIDDLEWARE_CLASSES = (
    '...',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.RemoteUserMiddleware',
    '...',
)

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.RemoteUserBackend',
)

喜んでテストしましたが、まだ機能しないことがわかりました~~~ (それほど単純ではないことはわかっていました)

まだステップが 1 つあります左の設定に行を追加し、環境変数に REMOTE_USER というユーザー名を追加します


os.environ['REMOTE_USER'] = "jerry"

の場合は完了です。リクエストにセッション情報が含まれていない場合、またはユーザーがセッションを通じてログインしていない場合は、上記の REMOTE_USER ユーザーがログインに自動的に使用されます。このようにして、公開搭乗カードを取得しましたが、セキュリティのために、このユーザーに対していくつかの許可制限を設定する必要がある場合があります。 (車に乗っても、何もせずに立っているだけです、笑)

しかし、これによっていくつかの問題が発生する可能性もあります。たとえば、現在のユーザーが他のインターフェイスにログインしているかどうかを判断し、ログインしていない場合は、ログインインターフェイスに移動します。ただし、REMOTE_USER を使用すると、自動的にログインし、ログイン ページに移動できなくなります。これには、ユーザーのログイン ロジックを再設計する必要があります。

以上がDjango サーバーはリモート ユーザーを通じて互いのメソッドを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。