0

私がやりたいことを説明するための非常に簡単な例を以下に示します。私のJavaクラス「CommonUtils」には、文字列を暗号化および復号化するメソッドがあります。logonuidfield と logonpassfield を Cookie に書き込む前に暗号化したい。CommonUtils.xorEncode(~) を Javascript から直接呼び出すことができないことは理解していますが、Cookie が書き込まれる前にこれらのフィールドの値が CommonUtils.xorEncode(~) を介して渡されるという回避策は可能ですか?

暗号化メソッドを JavaScript で記述したくありません。私はそれがJavaクラスによって行われることを望みます。私の推測では、LiveConnect などを使用しないと、私がやろうとしていることは不可能です。

前もって感謝します。

<%@ page import="package.CommonUtils" %>

<HTML>
<SCRIPT LANGUAGE=JavaScript>
function setCookies() {
    var email = document.getElementById("logonuidfield").value;
    var password = document.getElementById("logonpassfield").value;

    writeCookie("EmailText",email);
    writeCookie("PasswordText",password);      
}

function writeCookie(name, value) {
    document.cookie = name + "=" + escape(value);
}
</script>

<body>
<tr>
    <td>
        <%  
            String message = "This is a test message.";

            out.println("<Label>This is the original message: " + message + "</Label><br>");
            out.println("<Label>Hex before encrypting       : " + CommonUtils.printStringHex(message)  + "</Label><br>");
            message = CommonUtils.xorEncode(message);
            out.println("<Label>Hex after encrypting        : " + CommonUtils.printStringHex(message) + "</Label><br>");
            message = CommonUtils.xorDecode(message);
            out.println("<Label>Hex after decrypting        : " + CommonUtils.printStringHex(message) + "</Label><br>");
            out.println("<Label>This is the final message   : " + message + "</Label><br>");
        %>
    </td>
</tr>
<FORM name="logonForm" id="logonForm" autocomplete="off" onsubmit="setCookies()" method="post" action="" >
    <li>                                    
        <input type="text" id="logonuidfield" placeholder="email address*" style="width: 100%" name="j_user" type="email" value="" title="Email address *"/>
    </li>
    <li>
        <input type="password" id="logonpassfield" placeholder="Password*" style="width: 100%" name="j_password" />
    </li>
    <li>
        <input type="submit" value="Log in" name="uidPasswordLogon"/>
    </li>
</form>

4

1 に答える 1

0

リクエスト/レスポンス サイクルに注意してください。

  1. クライアントはフォームで URL を取得します

  2. サーバーはjspをコンパイルし、html出力を生成します

  3. クライアントには空のフォームが表示され、サーバーへの接続は存在しません。これは「ブラウザの世界」です。

  4. クライアントがフォームを送信するため、フォームデータをサーバーに投稿し、Cookie を保存しています。この時点では、サーバーから Java コードを実行する方法はありません。まだ「ブラウザの世界」です。

  5. サーバーはリクエストを受け取り、フォーム アクションにマップされた jsp/servlet/whatever を実行します。ここで、クライアントは既にフォーム データを送信しています。

  6. サーバーが応答を処理して送信します。

  7. ここで、クライアントはサーバーからの応答を再度受信し、サーバーが処理したものを Cookie に保存できます。

したがって、ステップ7まで答えが得られないため、ステップ4でサーバー側でJava暗号化を行うことはできません...

あなたが何をしようとしているのかについて、もっと具体的な情報が必要かもしれません...

于 2013-06-26T13:29:45.690 に答える