0

ダイジェスト認証を使用して検証する必要があるフォームがあります。私はまだ認証に取り組んでいますが、基本的な HTML フォームをレイアウトしました。

<form method="post" id="loginForm" class="validate">

            <div data-role="fieldcontain">
                <label for="password">Email:</label> 
                <input class="required email" type="text" name="username" id="username" placeholder="username@target.com">
            </div>

            <div data-role="fieldcontain"> 
                <label for="password">Password:</label>
                <input class="required" type="password" name="password" id="password" placeholder="password">
            </div>

            <input type="submit" value="Login">

        </form>

メソッドを持つ digest_auth.js という外部 js ファイルもあります。

$('#loginForm').submit(function() {
  alert('click');   
  username = $('#username').value();
  password = $('#password').value();
  realm = tokens['realm'];
  nonce = tokens['nonce'];
  qop = tokens['qop'];
  alert('submitted');
  ha1 = bcrypt(username + ":" + realm + ":" + password);
  ha2 = bcrypt("GET:" + "http://localhost:8090/web/login");
  response = bcrypt(ha1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" ha2);

  $.ajax(
    type: 'GET', // maybe POST?
    url: url,
    complete: function(xhr, status) {
      if (status == 200) {
        // success. save the nonce and nc in the local storage.
        // whenever you send a request to the server, use the nonce
        // and nc
          alert('Success');
      }
      else {
        // failure, try again
          alert('Failure');
      }
    }
  )
});

ただし、.submit は呼び出されていません。最初に alert() を追加しましたが、何も得られません。を使用して外部をリンクしました

<script type="text/javascript" src="digest_auth.js"></script>
4

2 に答える 2

0

問題はあなたのajaxリクエストにあります:

エラー:

  1. 応答の連結に「+」がありません
  2. ajax 属性は中括弧内にある必要があります

これを使って:

$(document).ready(function(){
  $('#loginForm').submit(function() {
      alert('click');   
      username = $('#username').value();
      password = $('#password').value();
      realm = tokens['realm'];
      nonce = tokens['nonce'];
      qop = tokens['qop'];
      alert('submitted');
      ha1 = bcrypt(username + ":" + realm + ":" + password);
      ha2 = bcrypt("GET:" + "http://localhost:8090/web/login");
      response = bcrypt(ha1 + ":" + nonce + ":" + nc + ":" + cnonce + ":" + qop + ":" + ha2);

      $.ajax({
        type: 'GET', // maybe POST?
        url: url,
        complete: function(xhr, status) {
          if (status == 200) {
            // success. save the nonce and nc in the local storage.
            // whenever you send a request to the server, use the nonce
            // and nc
              alert('Success');
          }
          else {
            // failure, try again
              alert('Failure');
          }
        }
      })
    });
});
于 2012-12-24T05:23:03.037 に答える
0

$('#loginForm')フォーム要素がページに存在した後に が実行されることを確認してください。

そのスクリプトが実行され、フォームが見つからない場合、送信はトリガーされますが、関数はトリガーされません。

ここで動作します: http://jsfiddle.net/MxgEf/7/ </p>

于 2012-12-24T05:24:14.063 に答える