ホームページ  >  記事  >  バックエンド開発  >  Python Websocket は QR コードをスキャンしてログインする機能を実装します --- GoEasy

Python Websocket は QR コードをスキャンしてログインする機能を実装します --- GoEasy

巴扎黑
巴扎黑オリジナル
2016-12-19 13:31:301668ブラウズ

最近、スキャンコードログイン機能に取り組んでいます。このため、WeChatスキャンログインの実装方法についてもオンラインで検索しました。この機能が完成したとき、私自身の便宜と、同様のニーズを持つ他のプログラマのために、実装のアイデア全体を整理することにしました。
QR コードログインを実現するには、次の 2 つの問題を解決する必要があります:
1. ユーザー名とパスワードを入力せずに権限のセキュリティの問題を解決するにはどうすればよいですか?言い換えれば、QR コードをスキャンしているクライアントが正規のユーザーであることをサーバーにどのように知らせるかということです。
2. クライアントでのユーザーの選択に基づいて、サーバーは Web ページ上でどのようにリアルタイムで応答しますか?

まずは、この問題を解決するための考え方の方向性を理解するために、WeChatの実装アイデアを整理してみましょう。 WeChat ログイン用の QR コードは、実際には URL を QR コードに変換する形式で、WeChat クライアントを通じてコードをスキャンした後、キャプチャした WeChat QR コードの URL を開くだけです。この URL の /login.weixin.qq.com/l/YdmTu30I5A==、YdmTu30I5A== は、このセッションの一意の ID を表します。これはブラウザのセッション ID に似ています。この ID を通じて、WeChat は直接フィードバックを行うことができます。確認結果をWebページに掲載します。 WeChat QR コード ログイン機能を使用するには、2 つの前提条件があります。 まず、WeChat アプリがクライアントにインストールされている必要があります。次に、ユーザーは WeChat アプリにログインする必要があります。 https://wx.qq.com/

Python Websocket メッセージプッシュ

なぜこれら 2 つの条件が必要なのでしょうか?これは、WeChat が Web バージョンへのログインを許可するかどうかを確認するとき、WeChat は現在のアプリのログイン情報を抽出し、上記のセッション ID をサーバーに送信する必要があるため、サーバーはログイン情報とセッションを受信した後に 2 つのことを確認できます。 ID: 1 つはログインしているクライアント ユーザーが認証されていることを確認すること、もう 1 つはセッション ID サーバーを使用してフィードバック結果をプッシュする Web ページを知ることです。

最初のポイントとして、私たちの重要な点は、ログインするかどうかを選択する前に、スキャンする前にユーザーが検証済みの正当なユーザーであることを確認することです (検証方法はユーザー名 + パスワード、または安全なキーにすることができます)。 この結果をプッシュするだけです。サーバー側に。ユーザーが合法かどうかを確認しない場合は、WeChat と同様に、QR コードが認識できないことをユーザーに直接伝えるか、最初にアプリへのログインを促すことができます。

本人確認を使って、2 番目の問題、フィードバック結果をリアルタイムで Web ページに表示する方法を解決しましょう。クライアントがバックグラウンドにリクエストを送信するのは簡単だが、Web ページでは ajax を使用して定期的にリクエストをサーバーに送信し、フィードバックがあるかどうかを確認するという友人もいるかもしれません。 Ajax ポーリング方式はクライアントとサーバーのリソースを消費するため、私はこのアプローチには同意しません。これには、Web リアルタイム プッシュ テクノロジという別のテクノロジが関係します。プッシュ テクノロジを使用すると、サーバー側とクライアント側のリソースが節約され、あらゆるメッセージを安定してプッシュおよび受信できます。実装の過程では、サードパーティのプッシュ サービスである GoEasy プッシュを使用しました。実装は非常に簡単です。このプロジェクトの他の機能も GoEasy プッシュ サービスを使用します。フィードバック結果をサーバーにログインします。私の実装手順は非常に簡単で、送信されたセッション ID をクライアントと Web ページ間の通信チャネルとして使用し、クライアントはそのセッション ID を値チャネルとしてサブスクライブします。サーバーはこのチャネルを使用して、結果を Web バージョンに積極的にプッシュできます。クライアントも対応するフィードバックを提供する必要がある場合、クライアントはこのチャネルにサブスクライブするだけで済み、サーバーはメッセージを受信した後、結果を Web バージョンとクライアントに同時にプッシュします。必要に応じて goeasy のコールバック関数を使用します。 GoEasy Push の使用については、次のブログを参照してください: http://www.cnblogs.com/jishaochengduo/articles/5552645.html また、GoEasy Push 公式 Web サイトにはデモもあります: GoEasy QR コード。スキャンログインデモ、皆さんも行って効果を確認してください



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