2011-06-20 4 views
2

Google App Engineアプリの開発中に、クライアントコード(つまり、JavaScript)がユーザーがログインしているかどうかを検出する方法を教えてください。注:私はクライアント(サーバーではない)での検出を指しています。googleアプリケーションエンジン:ユーザーがログインしているかどうかをクライアントコードで検出する方法

+0

あなたはJavaまたはPythonを使用していますか? –

+0

@adithyaそれはJavaまたはPythornはバックエンドを指していますが、ユーザーがサーバー側にログインしているかどうかを判断するために使用するものではありません。私はgae-sessionsを使用しています。最初の答えで提案された変数としてユーザーを渡しています。 – topless

+0

他のパブリックページを作成せずにログアウトボタンを表示できるので、ログインステータスに関係なくキャッシュすることができます。 – LtWorf

答えて

7

このような場合は、本当にカスタムソリューションが必要です。 Users APIは、サーバー側で何を知っておく必要があるかを教えてくれますが、この情報をクライアントサイドのJavascriptに送るのはあなた次第です。 私は通常、テンプレートにスニペットを追加します。ような何か:

<script>var username="{{ user.username }}";</script> 

ユーザ名変数は、ユーザーは、ログインしていない空の文字列の場合はそうでない場合、あなたが行って、ユーザー名の準備ができています。もちろん、ブール値を使用することはできますが、後で必要がある場合は、これはもう少し機能をサポートします。

EDIT:これはそれを行うために推奨される方法であれば、私は知りませんが、私はこの答えを掲示するので試してみた別の方法があります。ない場合

<script src="/myapi/userinfo"></script> 

次にユーザーがログインしている場合var user = {/* User Stuff */};で応答/myapi/userinfoエンドポイントを作成し、var user = null;:単に通常どおりメインページに仕えるが、スクリプトタグを追加します。

この主な利点は、ユーザーごとにページを再レンダリングする必要なく、ページをキャッシュして処理できることです。しかし、これは、クライアント上にあるページをカスタマイズするためのJavaScript(ユーザー名、ログアウトボタンなどを表示するためのJavaScript)が必要であることを意味します。

+0

うん。ユーザーがまだログインしているかどうかを検証するためのjavascriptを作成するだけです。 – Rudy

+0

しかし、これはサーバーからの対話を必要とし、キャッシュを無効にします。 – LtWorf

+0

私は似たような方法を使っていますが、問題はChromeデベロッパーツールでjavascriptを注入する可能性があることです。ユーザーは、ユーザー名変数の内容を変更して、そのアカウントにアクセスできます。この懸念は合理的ですか? –

関連する問題