Nel mio progetto MVC 3 ho una pagina di login che utilizza la logica anti-contraffazione integrato nel MVC 3.ASP.NET MVC 3 sito web anti-contraffazione di token non riesce solo su IE
Su Firefox & Opera funziona bene, ma su IE ottengo questo:
A required anti-forgery token was not supplied or was invalid.
sono davvero perplesso sul motivo per cui solo IE soffre questo, ho controllato le impostazioni dei cookie e sono impostare lo stesso come gli altri browser quindi sono in un perso qui.
Quando uso il codice anti falso, utilizzo sia un SALE sia il controllo del dominio (che non dovrebbe avere importanza, ma vale la pena di essere detto).
Ecco il codice della vista:
@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 è un valore da web.config per l'impostazione facile durante i test e la produzione di utilizzo.
Se rimuovo il dominio e la porzione di percorso dal tag antifora, funziona perfettamente. Quindi uno di questi due deve essere il problema.
potete inserire il codice di vista ? –
Ciao, quale versione di IE stai usando? –
Sei in grado di (usando gli strumenti di sviluppo di IE, Firebug Lite o Fiddler) scoprire se la tua richiesta 'POST' sta inviando il cookie di AntiForgery? – isNaN1247