反诈骗在asp.net Razor中无法正常工作

时间:2016-03-22 12:04:42

标签: asp.net iis razor antiforgerytoken

我有一个ASP.NET Webpages Razor语法页面,它突然停止了对用户的身份验证!

如果用户现在尝试登录该站点,则服务器将响应消息:

所需的防伪表单字段" __ RequestVerificationToken"不存在。

嗯......是的!

查看我的登录页面的来源,它确实添加了隐藏字段,如下所示..

<section id="loginForm">
    <form method="post">
        <fieldset>
        <input name="__RequestVerificationToken" type="hidden" value="WgwaKIsXipJ4C8IRsaz__C_tW02ejupv8af-w3czwefo2AEacVlGs_k-lFNRfLqWr0inzHxtkEnXgPKZMvacv5u1LVfLphIP8R1JGukMZcA1" />
        <legend>Sign in to Your Account</legend>
        <ol>
            <li class="email">
                <label for="email" >Username</label>
                <input type="text" id="email" name="username"   />
                <span class="field-validation-valid" data-valmsg-for="username" data-valmsg-replace="true"></span>
            </li>
            <li class="password">
                <label for="password" >Password</label>
                <input type="password" id="password" name="password"  />
                <span class="field-validation-valid" data-valmsg-for="password" data-valmsg-replace="true"></span>
            </li>
            <li class="remember-me">
                <input type="checkbox" id="rememberMe" name="rememberMe" />
                <label class="checkbox" for="rememberMe">Remember me?</label>
            </li>
        </ol>
        <input type="submit" value="Sign in" />
    </fieldset>
    </form>
</section>

要创建此字段,我使用@AntiFogery.GetHTML()并在post方法中验证用户@AntiForgery.Validate()&lt; ----这是网站崩溃并向我显示上述错误。

我不知道这是否有帮助。但如果我一起删除验证(服务器和客户端),我在尝试登录网站时收到403错误。

奇怪的是,这种情况突然发生而没有任何干预?

最后,在我的本地计算机上,不会发生。仅在IIS 8上托管时

1 个答案:

答案 0 :(得分:1)

我终于发现了IIS服务器的问题!

在我的网络服务器上,我有一个名为ModSecurity Installed的工具,显然是在干扰我的POST请求。

通过将该行[{1}}添加到网站的<ModSecurity enabled="false" />中,所有内容都会恢复到原始状态。

我希望将来能帮助其他人解决这个问题