Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

[Gelöst] Das erforderliche Antifälschungscookie "__RequestVerificationToken" ist nicht vorhanden.
Thoxx
myCSharp.de - Member

Avatar #avatar-3329.png


Dabei seit:
Beiträge: 115

Themenstarter:

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

beantworten | zitieren | melden

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:
Fehler
[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!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Thoxx am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16145

beantworten | zitieren | melden

Passiert eigentlich nur, wenn an der Methode das Attribut oder im HTML der AntiForgeryToken() Aufruf fehlt.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Thoxx
myCSharp.de - Member

Avatar #avatar-3329.png


Dabei seit:
Beiträge: 115

Themenstarter:

beantworten | zitieren | melden

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>
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Thoxx am .
private Nachricht | Beiträge des Benutzers
Thoxx
myCSharp.de - Member

Avatar #avatar-3329.png


Dabei seit:
Beiträge: 115

Themenstarter:

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Thoxx am .
private Nachricht | Beiträge des Benutzers