Wie kann ich das beheben anti-forgery token gemeint war, für den Benutzer "", aber der aktuelle Benutzer ist "xxxx" Fehler
Den mitgelieferten anti-forgery token gemeint war, für den Benutzer "", aber der aktuelle Benutzer ist "xxxx ".
Ich habe jede einzelne Lösung möglich, um loszuwerden, diese Fehler ohne Erfolg:
Hier ist das Szenario:
Ich habe 2 separate log-in offenen tabs in meinem browser-tab A-Tab B:
1. Logge ich mich auf meiner Website in Tab Ein
2. Versuchen Sie dann auf log in Register B
Den oben genannten Fehler tritt dann
Mein C# web-MVC-login Ansicht:
v class="col-md-4 col-md-offset-4">
<form class="form-signin" role="form" action=@Url.Action("Login", "Account") method="POST" id="signInForm">
@Html.AntiForgeryToken()
<div class="form-group">
<label for="loginEmail">Email</label>
<input type="text" id="loginEmail" name="loginEmail" class="form-control" placeholder="Email address" >
</div>
<div class="form-group">
<label for="loginPassword">Password</label>
<input id="loginPassword" type="password" name="loginPassword" class="form-control" placeholder="Password" >
</div>
<button class="btn btn-lg btn-primary btn-block main-btn" type="submit">Sign in</button>
<div>
<br>
<a href="@Url.Action("Index","GettingStarted")">Register</a><br>
<a href="@Url.Action("ForgotPassword","Account")">Forgot your password?</a>
</div>
</form>
Und meine Konten-controller wie diesem:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model)
{
if (ModelState.IsValid)
{
Wie kann ich diesen Fehler beheben?
- Warum ist das geschlossen
- Es ist nicht - zumindest nicht in meinem Fenster (erfrischt so gut).
- Wann wäre das jemals ein Problem in einem realen Szenario sowieso (also wie landet man versuchen, sich doppelt aus zwei Registerkarten auf der selben Seite)? Sobald Sie sich einloggen, auf den Reiter, in dem Sie angemeldet sind, auf die Registerkarte B, nur die Seite aktualisieren...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies geschieht, weil die zwei browser-tabs teilen sich den gleichen cookie-Speicher. Die Authentifizierung mit dem ersten Reiter, der setzt einen neuen cookie identifiziert Ihren Benutzernamen ein. Wenn die zweite Registerkarte eingegeben werden müssen, übergeben die aktualisierten cookie abgerufen, aus der eine erfolgreiche Authentifizierung in der ersten Registerkarte, zusammen mit dem versteckten Formularfeld, die geladen wurde, bevor die Authentifizierung, die Sie als anonymer Benutzer. Da die Usernamen im cookie und das versteckte Formularfeld nicht übereinstimmen, schlägt die Validierung fehl.
Den AntiForgeryWorker, dass ValidateAntiForgeryTokenAttribute verwendet, codiert die authentifizierten Benutzernamen in das cookie und die versteckte form, in Feld und sorgt dafür, dass Sie beide übereinstimmen, wenn die Validierung. Als solche, wenn Sie sich authentifizieren, oder ändern Benutzer diese überprüfung schlägt fehl, wenn die Buchung auf eine Aktion mit der ValidateAntiForgeryTokenAttribute.
Leider bedeutet dies, dass Ihre Möglichkeiten begrenzt sind, um nicht den Schutz der login-action mit ValidateAntiForgeryTokenAttribute, Ignorieren das Szenario, das Sie beschreiben, und lassen Sie die Validierung fehl, oder reimplementing die AntiForgery Implementierung in MVC-solche, die nicht den Benutzernamen enthalten, die in der überprüfungsprozedur.