**テスト Web サイト:
http://con.monyun.cn:9960/acc...
このページには確認コードがあります。この確認コードの URL は
です<img src="../aut_checkCode.hts?=0.8963835985936632" class="icd">
認証コードをクリックしたときに表示される画像を変更するにはどうすればよいですか? ?
手順:
(1) 認証コード画像をクリックすると、img タグの src 属性の末尾の数字が変わります。数字が変わると、ブラウザは新しいコードにアクセスします。データ取得用URL
(2) 新しいURLのクエリ文字列には値のみがあり、名前はありませんが、サーバー側ではこの数値を取得できないということでしょうか?
0.8963835985936632
サーバー側でこの数値を取得する方法はありますか? ?
(3) 数値を取得する方法がない場合。サーバー側はリクエストを処理し、バイナリ画像データを返します。
現時点で画像のトークンは生成されますか?生成された場合、それをクライアントに渡すにはどうすればよいでしょうか?
(4) ユーザーは確認コードを送信します。サーバー側の処理では、ユーザーが送信した検証コードが正しいかどうかをどのように検証するのでしょうか?
サーバーはどのようにして Redis から正しい確認コードを取得できますか?
それについて話しましょう
返事をください! **
PHP中文网2017-05-27 17:43:18
ご招待いただきありがとうございます。一般的に、確認コードの作業手順は次のとおりです。
.response
中, 返回给浏览器, 并把这个4位字符串存在了当前session
の文字列を比較して、確認コードを完成させます。session
たとえば、次のように cookie
に設定できます (key=test, value=test
):session
比如可以设置到cookie
中如下(key=test, value=test
淡淡烟草味2017-05-27 17:43:18
1. 以下の数値の変更は、ブラウザーのキャッシュの問題を回避するためです。
2. サーバーは、時刻ファイルに従って検証コードを自動的に生成します。 )
3. 検証コードの原理は、最初に乱数の文字列を生成してセッションに保存し、最後に画像を生成してクライアントに送信して識別することです。サーバーはあなたの答えをセッション内の乱数と比較します。これは検証が成功したことを意味します。
4.いいね35. Redis で使用する場合は、次のキーのように、認証コードがどのユーザーに属しているかを識別できるように、通常、トークンまたはセッションが使用されます。 リーリー
疑似コード
確認する
リーリー为情所困2017-05-27 17:43:18
最初の 1 つ目: 確認コードの一般的なプロセスは、説明したものと同じです。
2 つ目:
確認コードを生成するには、バックグラウンドに値を渡す必要はありません。
指定した例では、最後の数値文字列の変更は、実際には URL を再リクエストすることです。通常、画像のリンクは検証コードを生成するリンクを指します。クリック後に js を使用して接続を変更します。つまり、src の背後の接続が変更されたことをブラウザーが検出できるように、その後に乱数の文字列を追加します。ランダムな文字列の文字列がこれに使用されます)、その後、新しい生成された検証コード イメージを取得するためにバックグラウンドを再度要求します。
バイナリ イメージがバックグラウンドで返された後は、トークンを生成する必要はありませんが、検証コードの生成に使用される数字の文字列をセッションに保存する必要があります。サーバー側に保存しておけば安全であり、クライアントに返す必要はありません。
ユーザーが送信された確認コードを入力した後、ユーザーが送信した確認コード番号をサーバー セッションの番号と比較します。 それらが同じであれば、検証は成功します。
PHP中文网2017-05-27 17:43:18
背景コードは一般的に次のとおりです
public void genAuthImage(){
//トークン uuid を生成します
//Cookie を書き込みます
response.addCookie();--->実際に set-cookie ヘッダー情報を設定します
//画像を生成し、response を使用して書き出す
end
}
フロントエンド:
フロントエンド:
クロームチェック
コンソール
結論は不確か: レスポンスタイプがimage/jpgの場合、Cookieは設定できません。
見た人ならその理由を説明できる