失敗在我的MVC 3的項目我有一個使用內置MVC 3ASP.NET MVC 3網站防僞標記只在IE
在Firefox &歌劇的防僞邏輯它的工作原理登錄頁面不錯,但在IE上我得到這個:
A required anti-forgery token was not supplied or was invalid.
我真的難倒爲什麼只有IE遭受此,我查了cookie設置以及它們設置一樣的其他瀏覽器,所以我在迷失在這裏。
當我使用防僞代碼時,我使用了SALT和域名檢查(這應該不重要,但值得一說)。
這裏是視圖代碼:
@model login.Models.LogOnModel
@{
ViewBag.Title = "Log On";
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
//focus on form.
$("#UserName").focus();
});
</script>
@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @class = "form login" })) {
@Html.AntiForgeryToken("[email protected]#Hq4(", ViewBag.AppDomain, "/")
<div id="box">
<h1>Login</h1>
Please enter your username and password. @Html.ActionLink("Register", "Register") if you don't have an account.
<div class="block" id="block-login">
<h2>
Login Form</h2>
<div class="content login">
@Html.ValidationSummary(true)
<div class="group buffer">
<div class="left">
<label class="label right">
@Html.LabelFor(m => m.UserName)</label>
</div>
<div class="right">
@Html.TextBoxFor(m => m.UserName, new { @class = "text_field" })
@Html.ValidationMessageFor(m => m.UserName)
</div>
</div>
<div class="group buffer">
<div class="left">
<label class="label right">
@Html.LabelFor(m => m.Password)</label>
</div>
<div class="right">
@Html.PasswordFor(m => m.Password, new { @class = "text_field" })
@Html.ValidationMessageFor(m => m.Password)
</div>
</div>
<div class="group buffer">
<div class="left">
<label class="label right">
@Html.LabelFor(m => m.RememberMe)</label>
</div>
<div class="right">
@Html.CheckBoxFor(m => m.RememberMe)
</div>
</div>
<div class="group navform buffer">
<div class="right">
<button class="button" type="submit">
<img src="@Url.Content("~/Content/images/icons/key.png")" alt="Save" />
Login
</button>
</div>
</div>
</div>
</div>
</div>
}
ViewBag.AppDomain是從web.config中用於在測試和生產使用容易設置的值。
如果我從防僞標記中刪除了域和路徑部分,它就可以正常工作。所以這兩個中的一個就是問題所在。
您可以發佈您的視圖代碼? – 2011-12-22 15:45:48
嗨,你使用的是什麼版本的IE? – 2011-12-22 16:08:42
你能夠(使用IE的開發工具,Firebug Lite或Fiddler)找出你的'POST'請求是否發回AntiForgery cookie? – isNaN1247 2011-12-22 16:09:37