对于wordpress,viewstate MAC验证失败

时间:2014-02-27 22:40:37

标签: asp.net windows wordpress viewstate

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

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

viewstate MAC验证失败。如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法。无法在群集中使用AutoGenerate。

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> 

1 个答案:

答案 0 :(得分:1)

在WordPress的表单中,您有两个隐藏字段,__VIEWSTATE__EVENTVALIDATION您复制的值。

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

您使用的值已过期且预计会出现此错误

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

一个例子:

WordPress网站中的网络表单

<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>

external-login.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
}