AntiForgeryToken 未通过 href link 提交表单
AntiForgeryToken not submitting on form submission via href link
代码片段...
<div class="row">
<div class="col-md-4">
@* test code *@
<form action="/Account/LogOff/" id="logoutForm" class="logoutForm" method="post">
@Html.AntiForgeryToken()
@*<input type="submit" value="LogOff" />*@
<a href="javascript:document.getElementById('logoutForm').submit()">@xx.Web.Resources.AccountLogin.Logout</a>
</form>
@* original code *@
@*@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">@xx.Web.Resources.AccountLogin.Logout</a>
}*@
</div>
</div>
</code>
//********* controller code
//
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
return RedirectToAction("Index", "AnonController");
}
图片确认,令牌在生成的页面中。
所以“@*原始代码*@”来自新生成的mvc5应用程序模板。在一个全新的应用程序中,它运行良好并且您已退出。
我正在构建的应用程序已停止工作。如果我使用输入按钮提交表单,则测试代码(@* 测试代码 *@ 以上)我可以使用。如果我使用
关于什么会阻止提交表单域的任何想法?
提前致谢。
所以还是不明白这是怎么回事。
但是,以下内容修复了它。
已更改 "javascript:document.getElementById('logoutForm').submit()"
调用执行提交的本地 js 函数。
function SubmitMe() {
$("<input />").attr("type", "hidden")
.attr("name", "__RequestVerificationToken")
.attr("value", $('input[name=__RequestVerificationToken]').val())
.appendTo("#logoutForm");
$("#logoutForm").submit();
}
代码片段...
<div class="row">
<div class="col-md-4">
@* test code *@
<form action="/Account/LogOff/" id="logoutForm" class="logoutForm" method="post">
@Html.AntiForgeryToken()
@*<input type="submit" value="LogOff" />*@
<a href="javascript:document.getElementById('logoutForm').submit()">@xx.Web.Resources.AccountLogin.Logout</a>
</form>
@* original code *@
@*@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">@xx.Web.Resources.AccountLogin.Logout</a>
}*@
</div>
</div>
</code>
//********* controller code
//
// POST: /Account/LogOff
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
return RedirectToAction("Index", "AnonController");
}
图片确认,令牌在生成的页面中。
所以“@*原始代码*@”来自新生成的mvc5应用程序模板。在一个全新的应用程序中,它运行良好并且您已退出。
我正在构建的应用程序已停止工作。如果我使用输入按钮提交表单,则测试代码(@* 测试代码 *@ 以上)我可以使用。如果我使用
关于什么会阻止提交表单域的任何想法? 提前致谢。
所以还是不明白这是怎么回事。
但是,以下内容修复了它。
已更改 "javascript:document.getElementById('logoutForm').submit()" 调用执行提交的本地 js 函数。
function SubmitMe() {
$("<input />").attr("type", "hidden")
.attr("name", "__RequestVerificationToken")
.attr("value", $('input[name=__RequestVerificationToken]').val())
.appendTo("#logoutForm");
$("#logoutForm").submit();
}