对 WordPress 的视图状态 MAC 验证失败



我们在Linux共享服务器上有一个wordpress站点(使用cPanel)。 我们希望创建一个登录脚本,将我们的网站连接到另一个使用微软服务器的链接(ASPX页面)。当我们使用该脚本并尝试登录时,我们会看到以下错误:

"/NET"应用程序中的服务器错误。

视图状态 MAC 验证失败。如果此应用程序由 Web 场或群集承载,请确保配置指定相同的验证密钥和验证算法。自动生成不能在群集中使用。

http://go.microsoft.com/fwlink/?LinkID=314055

我们做了一些检查,似乎这个问题可以通过在Windows服务器上编辑web.config文件来解决,但我们是linux。任何人都可以建议如何在wordpress上解决问题吗?

以下是我们在wordpress中使用代码的方式:

<form method="post" action="http://owners.mydomain.com/login.aspx" id="ddl00"> 
<div class="aspNetHidden"> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"      value="/fdfdfaerghjkkaaklgjlakrrvc34fdfWjAdfdfdfamNIzDfdf6adBjuDFWfzdfmdffY" /> 
</div> 
<div class="aspNetHidden"> 
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/dfdfdasfasdfjglakfJKLFJDLKJR34252KKJLKJFD/fdfkadfeoawrfir/IeirIIURIR+KKJFKEjkdsfjerk" /> 
</div> 
<table style="width:auto; margin:2em auto 0 auto;"> 
<tr> 
<td class="label"> 
Username
</td> 
<td> 
<input name="username" type="text" id="username" tabindex="1" /> 
</td> 
</tr> 
<tr> 
<td class="label"> 
Password 
</td> 
<td> 
<input name="password" type="password" id="password" tabindex="2" /> 
</td> 
</tr> 
<tr> 
<td colspan="2" class="button_row"> 
<input type="submit" name="ctl15" value="Login" tabindex="3" /> 
</td> 
</tr> 
</table> 
</form> 

在WordPress的表单中,您有两个隐藏字段,__VIEWSTATE和您复制的值__EVENTVALIDATION

这些值是自动生成的,并从 ASP.NET 引擎用于验证每个接收请求。

您使用的值已过期,预计会收到此错误

如果您有权访问 ASP.NET 应用程序,则需要调整该应用程序,以便它可以从其他应用程序接收 POST。我正在考虑一个空白页面(例如 external-login.aspx ),将接受这些 POST 并检查凭据。

举个例子:

WordPress网站中的Web表单

<form method="post" action="http://owners.mydomain.com/external-login.aspx"> 
    <table style="width:auto; margin:2em auto 0 auto;"> 
        <tr> 
            <td class="label"> 
                Username
            </td> 
            <td> 
                <input name="username" type="text" id="username" tabindex="1" /> 
            </td> 
        </tr> 
        <tr> 
            <td class="label"> 
                Password 
            </td> 
            <td> 
                <input name="password" type="password" id="password" tabindex="2" /> 
            </td> 
        </tr> 
        <tr> 
            <td colspan="2" class="button_row"> 
                <input type="submit" name="ctl15" value="Login" tabindex="3" /> 
            </td> 
        </tr> 
    </table> 
</form>

外部登录中的代码.aspx

protected void Page_Load(object sender, EventArgs e)
{
    string username = Request.Form["username"];
    string password = Request.Form["password"];
    //Code here that checks the credentials and logins the user
}

最新更新