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


原理の説明
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 でコード スキャン ログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

Redisサーバーを起動する手順には、以下が含まれます。オペレーティングシステムに従ってRedisをインストールします。 Redis-Server(Linux/Macos)またはRedis-Server.exe(Windows)を介してRedisサービスを開始します。 Redis-Cli ping(Linux/macos)またはRedis-Cli.exePing(Windows)コマンドを使用して、サービスステータスを確認します。 Redis-Cli、Python、node.jsなどのRedisクライアントを使用して、サーバーにアクセスします。

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。

Redisを使用して操作をロックするには、setnxコマンドを介してロックを取得し、有効期限を設定するために有効期限コマンドを使用する必要があります。特定の手順は次のとおりです。(1)SETNXコマンドを使用して、キー価値ペアを設定しようとします。 (2)expireコマンドを使用して、ロックの有効期限を設定します。 (3)Delコマンドを使用して、ロックが不要になったときにロックを削除します。
