0

我想创建一个一次性密码的快速模拟。问题是我在一个母版页子页面中,我只能在一个内容占位符中有一个 asp.net 表单,另一个包含一个生成随机代码的 javascript 代码。

如何将此代码传递给asp.net,以便当用户单击验证时,我可以将他输入的代码与javascript生成的随机代码进行比较(也许是ajax,但我看不出如何?)

如果我可以有 2 个 asp.net 表单,那将不是问题。

更新:我修改了下面的源代码以包含 Andrei 建议的解决方案。

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <form id="form1" runat="server">
        Username: <asp:TextBox ID="txtUserName" runat="server" /></br>
        OTP: <asp:TextBox ID="txtOTP" runat="server" /></br>
        <asp:TextBox ID="OtpHiddenField" runat="server" /></br>
        <asp:Button ID="btnValidate" runat="server" onclick="btnValidate_Click" Text="Validate" /></br>
</form>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
<h2>Fake OTP Simulation</h2>
Enter "John"
</br>
Enter OTP 
<script type='text/javascript'>
    var pass = String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9));
    document.write(pass);
    document.getElementById('<%= OtpHiddenField.ClientID %>').value = pass;
</script>
4

1 回答 1

1

您可以将生成的值插入将与表单一起发布的隐藏字段中。

<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" Runat="Server">
    <form id="form1" runat="server">
        Username: <asp:TextBox ID="txtUserName" runat="server" /><br/>
        OTP: <asp:TextBox ID="txtOTP" runat="server" /><br/>
        <asp:Button ID="btnValidate" runat="server" onclick="btnValidate_Click" Text="Validate" /><br/>
        <asp:HiddenField ID="OtpHiddenField" runat="server" />
</form>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">
<h2>Fake OTP Simulation</h2>
Enter "John"
<br/>
Enter OTP 
<script type='text/javascript'>
    function getRandomInt(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    var pass = String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9));
    document.write(pass);
    document.getElementById('<%= OtpHiddenField.ClientID %>').value = pass;
</script>
</asp:Content>

我希望你知道这种方法非常非常脆弱。

于 2012-09-13T13:43:26.273 回答