2016-12-15 4 views
2

私は現在、それぞれ独自のVPSで動作し、それぞれが独自のサブドメイン(foo.example.com、bar.example.com、...)で実行されている多くのDjangoプロジェクトがあります: enter image description hereDjangoで集中型ログインサーバーを作成する方法は?

私は何をしたいことは、各アプリケーションのすべてのログイン処理(許可および認証)を管理し、中央のDjangoサーバーを持つことであり、ユーザのログインfoo.example.comで、その後bar.example.comになり、彼のセッションは保持します(ユーザー/パスワード)を入力する必要はありません。ユーザーがログアウトした場合も同じですが、再度ログインするまで他のプロジェクトで何も表示されませんでした。あなたはgmail.comにログインしyoutube.comまたはblogger.comに行くとき、Googleが何をするかのように同様の

(私が何をしたいのかに類似か:あなたはgoogle.comでログインしdrive.google.comphotos.google.comに行き、calendar.google.com)、または任意の他のGoogleのサイトは、あなたのセッションはアクティブなままです。

私はそれを達成するのに役立つdjangoパッケージまたは他の方法はありますか?

答えて

2

私はdjango restフレームワークを使用してログインします。これにより、セッションクッキーがインストールされます。セッションクッキーは、ユーザーがログインする必要があるページを開くたびに確認できます。クッキーが期限切れになったり、djangoがクッキーを期限切れにしたりすると、ユーザーはログアウトされ、認証チェックがうまくいけばページは表示されません。つまり、どこにいてもdjangoサーバーにログインすれば、facebookやgoogleのようにページにもログインしたままになります。 djangoサーバからログアウトすると、どこでもリモートページからログアウトされます。

django restフレームワーク認証hereについて詳しく読むことができます。

+1

あなたの提案に感謝して、[djoser](https://github.com/sunscrapers/djoser)パッケージと[django-rest-framework-jwt](https://github.com/GetBlimp/django- rest-framework-jwt)それはとてもうまくいった! – carlosj2585

+0

どのように動作するか教えていただけますか? E.G.ユーザーはbar.example.comにトークンを持ってきます。あなたのアプリケーションがそれをチェックする方法?このトークンをチェックするために認証サーバーにhttp要求を出しますか? bar.example.comごとにユーザーテーブルのコピーを持っているのですか、認証サーバーでのみですか?または、彼らは同じDBを使用していますか? – shaihulud

+0

ちょうどdjango restフレームワークを使用すると、ポップアップウィンドウのように元のサーバーにサインインした人は、すべてのページでjavascriptによる認証をチェックすればうまくいきますが、djoserはより完全なソリューションです。 ここでは、djoserでJson Webトークン(JWT)をjuseする方法の例を示します:http://stackoverflow.com/questions/29939042/drf-how-to-integrate-django-rest-framework-jwt-to-djoser –

関連する問題