我们在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>
答案 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
}