ホームページ  >  記事  >  データベース  >  Redis でコード スキャン ログインを実装する方法

Redis でコード スキャン ログインを実装する方法

PHPz
PHPz転載
2023-05-28 14:58:161372ブラウズ

要件の紹介

まず、スキャン コード ログインとは何かについてご紹介します。現在、ほとんどの学生は QQ、タオバオ、Tmall、その他のソフトウェアを携帯電話にインストールしています。これらのアプリを開発する会社には、対応する Web サイトがあります。ユーザーがウェブサイトを利用する際に、ログインをより便利かつ安全にするため。これらの企業は、携帯電話をスキャンすることでログインできるサービスを提供しています。 Web ページにログインしたときの効果は次のとおりです:

Redis でコード スキャン ログインを実装する方法

Redis でコード スキャン ログインを実装する方法

多くの友人は、Web ページに QR コードしか表示されていないことに奇妙に思うかもしれませんが、どの携帯電話が QR コードをスキャンしてログインしたかをどのようにして知るのでしょうか?しかもログイン完了後はユーザー情報を直接ユーザーに表示できるのが本当にすごいです。

原理の説明

Web ページ サーバー

次のステップは、このサービスの詳細な実装です。ユーザーがWebサイトのログインページを開くと、ブラウザサーバーにログイン用QRコードの取得リクエストが送信されます。

サーバーはリクエストを受信した後、ランダムに uuid を生成し、この ID をキー値として Redis サーバーに保存し、有効期限を設定します。有効期限が切れた後は、ユーザーのログイン QR コードを更新する必要があります。再取得した。同時に、このキー値と会社の検証文字列を組み合わせ、QR コード生成インターフェイスを介して QR コード イメージを生成します (QR コード生成。インターネット上には既製のインターフェイスやソース コードが多数ありますが、これらはここで紹介します。) 次に、QR コード画像と uuid をユーザーのブラウザに返します。

ブラウザは定期的にサーバーにリクエストを送信し、ログインが成功したかどうかを確認します。これらのリクエストには QR コードと UUID 情報が含まれます。リクエストには、現在のページの識別子として uuid が含まれます。サーバーはキーとして UUID を Redis に保存するだけなので、ユーザーの ID 情報はどこから来るのか? 混乱する学生もいるかもしれません。

ここには実際にユーザー ID 情報が存在します。この ID 情報はモバイル サーバーによって Redis に保存されます。

モバイル サーバー

ブラウザは QR コードを取得すると、それを Web ページに表示し、ユーザーに「携帯電話を取り出し、スキャンを開いてログインしてください」と表示します。ユーザーは携帯電話を取り出し、QR コードをスキャンして認証情報と UUID を取得します (QR コードをスキャンして文字列を取得する機能は、インターネット上にも多くのデモがあるため、ここでは詳しく紹介しません) 。

モバイル端末はすでにログインしているため、モバイル端末サーバーにアクセスすると、パラメーターにはユーザーのトークンが含まれ、モバイル端末サーバーはそれをユーザーの userId に解析できます (ここでは、値はトークン) 携帯電話でユーザー ID を直接送信するのではなく、セキュリティのためです。ユーザー ID を直接送信すると傍受され、変更される可能性があります。トークンは暗号化されているため、変更のリスクははるかに小さくなります)。

携帯電話は、解析されたデータとユーザー トークンをパラメータとして使用して、検証ログイン要求をサーバーに送信します (ここでのサーバーはモバイル サーバーであり、携帯電話サーバーは Web サーバーと同じサーバーではありません)。サーバ)。リクエストを受信したサーバーは、まずパラメータ内の検証情報を比較して、ユーザーがログインを要求したインターフェイスであるかどうかを確認します。その場合は、携帯電話に確認メッセージを返信します。

携帯電話が応答を受信すると、ユーザーの誤操作を回避し、ログイン エクスペリエンスを向上させるために、ログイン確認ボックスが表示される必要があります。ユーザがログイン操作を確認した後、携帯電話は再度リクエストを送信する。サーバーは uuId と userId を取得した後、uuid をキーとして、ユーザーの userid をキーと値のペアの値として redis に保存します。

ログイン成功

その後、ブラウザが再度リクエストを送信すると、ブラウザ側のサーバーはユーザー ID を取得し、ログイン メソッドを呼び出し、それをブラウザ側のトークンに送り込むことができます。ブラウザが再度リクエストを送信すると、ユーザー情報がブラウザに返され、ログインが成功します。携帯電話とブラウザ上のユーザー情報は正確に同じではない可能性があるため、ユーザー情報を直接保存するのではなく、ユーザー ID を保存することを選択します。

ログインの概略図は次のとおりです:
Redis でコード スキャン ログインを実装する方法 ################################################



以上がRedis でコード スキャン ログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。