Node.js 当用户未能在AMP表单中输入正确的电子邮件(ID)时,我如何将其重定向到注册页面?

Node.js 当用户未能在AMP表单中输入正确的电子邮件(ID)时,我如何将其重定向到注册页面?,node.js,redirect,amp-form,Node.js,Redirect,Amp Form,当amp表单验证返回错误时,请告知是否有漫游重定向到新页面? i、 e.用户通过填充其电子邮件进行有限的登录尝试,然后当此限制超过时,客户端AMP表单触发重定向到注册页面 提前谢谢。 V.经过一些研究,我找到了一个相对较好的解决这个问题的方法。 首先,我描述了任务细节,以便全面了解其解决方案的流程: 我的网站上有一个用户身份验证表单。它需要正确的登录(显然是用户的电子邮件),所以每次用户输入他的emeil时,都要验证xhr请求是否被发送到服务器,并且这种情况在不提交表单的情况下发生,就像在amp

当amp表单验证返回错误时,请告知是否有漫游重定向到新页面? i、 e.用户通过填充其电子邮件进行有限的登录尝试,然后当此限制超过时,客户端AMP表单触发重定向到注册页面

提前谢谢。
V.

经过一些研究,我找到了一个相对较好的解决这个问题的方法。 首先,我描述了任务细节,以便全面了解其解决方案的流程: 我的网站上有一个用户身份验证表单。它需要正确的登录(显然是用户的电子邮件),所以每次用户输入他的emeil时,都要验证xhr请求是否被发送到服务器,并且这种情况在不提交表单的情况下发生,就像在amp表单说明中一样。 验证端点处理验证请求和返回结果,如果发生任何错误,我们可以将其用于表单验证消息。根据文档,没有任何以AMP形式实现的条件logick可以帮助限制此类请求并进行重定向。这意味着,将有用户谁会拿起忘记登录的白天和晚上的,这是不正确的。为了挽救这些用户的神经,必须限制他们的尝试次数,作为替代解决方案,只需邀请他们再次注册即可

在下面的场景中,用户输入了4次错误的电子邮件,结果它被重定向到注册页面(请注意,我使用手柄作为查看引擎):

{{!--验证xhr服务器响应,以及标准的verifyError对象,-}
{{!-包含'trunt'值,该值是进行的验证尝试次数--}
{{!---在此会话期间。-}
{{!--此数字用于确定“硬化”状态(true | | false)。“硬化”--}
{{!--状态负责更改--}}之间的可见性
{{!-输入:“#验证用户名”和“#验证用户名欺诈”。--}
{{!--为了简单起见,此设置只使用登录输入--}
{{!-输入“更改”事件,用于使用输入值--}设置“lastEntry”
{{!-来自amp状态“lastEntry”--}的输入值
不正确的电子邮件格式
{{{#验证错误}
{{消息}{{尝试}}
{{/verifyErrors}}
{{^verifyErrors}}
出了点问题。请稍后再试

\{{{#验证错误} \{{message}}\{{trunt} \{{/verifyErrors}}
使用了错误的地址,请继续使用新地址 {{/verifyErrors}}
在我看来,这种解决方案有一个缺点。如果用户第四次输入正确的电子邮件,他仍将被重定向到注册页面。 在所有其他情况下,此结构都能正常工作

{{!-- verify-xhr server response, in addition to standard verifyError object,--}}
{{!-- contains with 'attempt' value which is a number of verification attempts made --}}
{{!-- during this session.  --}}

{{!-- This number is used to determine 'sclerosis' state (true || false). 'sclerosis' --}} 
{{!-- state is responsible for responsible for changing the visibility between  --}} 
{{!-- inputs: '#verification-username' & '#verification-username-fraud'.  --}} 

   
<form method="post" name="testFormName" id="testForm" action-xhr="/test/submit" target="_top" verify-xhr="/test/verify"
    on="verify-error:AMP.setState({sclerosis: event.response[0].attempt >= 3 ? false : true})"
    custom-validation-reporting="as-you-go">
    <fieldset>
        <label>
{{!-- For the sake of simplicity only login input is used for this setup --}}
{{!-- input 'change' event used to set 'lastEntry' with input value  --}}

        <input name="email" id="verification-username" type="email" placeholder="Enter 
               email" required
               on="change:AMP.setState({lastEntry: event.value})" [hidden]=!sclerosis>
        
{{!-- input value from amp-state 'lastEntry'  --}}
        <input name="email" id="verification-username-fraud" [value]="lastEntry" 
               type="email" hidden
               [hidden]=sclerosis placeholder="Enter email"
{{!-- lastly navigate to registration page  --}}
               on="change:AMP.navigateTo(url='https://biletalu.local:80/user/reg')" 
               required>
        </label>
        <span visible-when-invalid="typeMismatch" validation-for="verification-username">incorrect email format</span>
        <input type="submit" value="Войти" id="subscribe">
    </fieldset>
    <div verify-error>
        <template type="amp-mustache">
            {{#verifyErrors}}
            {{message}}{{attempts}}
            {{/verifyErrors}}
            {{^verifyErrors}}
            <p>Something went wrong. Try again later?</p>
            <div class="customError">
                \{{#verifyErrors}}
                \{{message}} \{{attempt}}
                \{{/verifyErrors}}
                <br>
                
                Wrong address used, feel free to proceed with new  <a href="/user/reg"> 
                registration </a>
            </div>
            {{/verifyErrors}}
        </template>
    </div>
</form>