Laden...

[Gelöst] Das erforderliche Antifälschungscookie "__RequestVerificationToken" ist nicht vorhanden.

Erstellt von Thoxx vor 8 Jahren Letzter Beitrag vor 8 Jahren 5.863 Views
Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren
[Gelöst] Das erforderliche Antifälschungscookie "__RequestVerificationToken" ist nicht vorhanden.

Hi,

ich habe ein Problem wo ich einfach nicht weiterkomme.
*ASP MVC5 *Identity 2.0 *SQL Server 2014 Express

Für das Forms Submitten nutze ich die AntiForgeryTokens.
Die Anwendung läuft sowohl aus dem VS heraus ohne Probleme, als auch auf einem IIS 8.

Jetzt habe ich mir auf der gleichen IIS Instanz eine zweite Site (mit eigenem AppPool) als Test-System angelegt und dort 1:1 den gleichen Inhalt wie auf der funktionierenden Seite. Nur in der Web.Config ist ein anderer Connectionstring.

Allerdings bekomme ich in der zweiten Site (also das Test-System) beim Submitten immer die Meldung:> Fehlermeldung:

[HttpAntiForgeryException (0x80004005): Das erforderliche Antifälschungscookie "__RequestVerificationToken" ist nicht vorhanden.]

Das __RequestVerificationToken ist auf der Seite natürlich vorhanden und hat auch einen Value .

Ich steh echt auf dem Schlauch, zumal die erste Seite ja auch ohne Probleme läuft.

Hat jemand eine Idee für mich? Bin für jeden Hinweis dankbar!

16.806 Beiträge seit 2008
vor 8 Jahren

Passiert eigentlich nur, wenn an der Methode das Attribut oder im HTML der AntiForgeryToken() Aufruf fehlt.

Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren

Ja so kenne ich das Problem auch.
Aber wie gesagt, die ASP MVC Anwendung ist 1:1 von der funktionierenden Site kopiert, von daher kann ich mir das echt nicht erklären. 🙁

*edit*

Zur Vervollständigung trotzdem mal der (funktionierende) Code:
View.cshtml


            @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
            {
                @Html.AntiForgeryToken()
                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                <div class="form-group">
                    @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
                    <div class="col-md-10">
                        @Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
                        @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" })
                    </div>
                </div>
                <div class="form-group">
                    @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" })
                    <div class="col-md-10">
                        @Html.PasswordFor(m => m.Password, new { @class = "form-control" })
                        @Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" })
                    </div>
                </div>

                [...]

                <div class="form-group">
                    <div class="col-md-offset-2 col-md-10">
                        <input type="submit" value="Anmelden" class="btn btn-success btn-lg"/>
                    </div>
                </div>                
            }

Controller


        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

            [...]

        }

Gerenderte View im Browser enthält:


<form action="/Account/Login" class="form-horizontal" method="post" role="form">
    <input name="__RequestVerificationToken" type="hidden" value="2WFd0bbKB1WOgvnG2HPqZnMlBTh2qswCAxdww1_LsXwtvS1zlhzQ7Lw9tWridozcy4_9M_xEkr3zggXrKTyEED_bO6aveqXFHsT-gk1OVSA1" />

    [...]

</form>

Thoxx Themenstarter:in
112 Beiträge seit 2008
vor 8 Jahren

Ich hab den Fehler gefunden. Oh man, meine eigene Blödheit.

Auf der "normalen" Seite nutze ich HTTPS mit einem SSL Zertifikat. Entsprechend dazu steht in der Web.Config folgender Eintrag:


<httpCookies httpOnlyCookies="true" requireSSL="true" lockItem="true"/>

Wie ich schon sagte, bis auf den Connectionstring habe ich alles 1:1 kopiert 😁

Das Testsystem läuft ohne SSL/HTTPS. Das Vorhandensein des Eintrages in der obigen Form hat mir die Meldung des fehlenden RequestVerificationToken beschert. Habe ich einfach nicht daran gedacht.