2016-06-14 14 views
3

Mit der Out-of-the-Box-MVC-App, die mit der neuesten (VS2) VS2015 ASP.NET Core-Vorlage erstellt wurde, wird die Datei _LoginPartial.cshtml als Teil der freigegebenen _Layout.cshtml-Datei gerendert. _LoginPartial hat folgenden Inhalt:ASP.NET Core MVC-Projekt scheint AntiForgenery Token automatisch hinzuzufügen?

@using Microsoft.AspNetCore.Identity 
@using CodeServer.Models 

@inject SignInManager<ApplicationUser> SignInManager 
@inject UserManager<ApplicationUser> UserManager 

@if (SignInManager.IsSignedIn(User)) 
{ 
    <form asp-controller="Account" asp-action="LogOff" method="post" id="logoutForm" class="navbar-right"> 
     <ul class="nav navbar-nav navbar-right"> 
      <li> 
       <a asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)!</a> 
      </li> 
      <li> 
       <button type="submit" class="btn btn-link navbar-btn navbar-link">Log off</button> 
      </li> 
     </ul> 
    </form> 
} 
else 
{ 
    <ul class="nav navbar-nav navbar-right"> 
     <li><a asp-controller="Account" asp-action="Login">Log in</a></li> 
    </ul> 
} 

Wenn diese in die Seite gerendert wird, ist dies das Ergebnis (aus Sicht Quelle):

<form method="post" id="logoutForm" class="navbar-right" action="/Account/LogOff"> 
    <ul class="nav navbar-nav navbar-right"> 
     <li> 
      <a title="Manage" href="/Manage">Hello [email protected]!</a> 
     </li> 
     <li> 
      <button type="submit" class="btn btn-link navbar-btn navbar-link">Log off</button> 
     </li> 
    </ul> 
<input name="__RequestVerificationToken" type="hidden" value="..." /></form> 

Nicht zu ASP.NET ungnädig zu sein, aber wie ist dieser Token kommt da rein? Ich habe außerdem eine find-in-files für die gesamte Lösung auf AntiForgener gemacht, und die einzigen Treffer sind entweder [ValidateAntiForgeryToken] Tags oder Einträge in project.lock.json.

Ich wollte überprüfen, dass meine validate-Tags funktionierten, indem Sie absichtlich das Token in der Anfrage auslassen, aber ich kann das nicht tun, wenn das Token hilfreich (?) Für mich hinzugefügt wurde.

Antwort

10

Nicht zu Ungläubig sein zu ASP.NET, aber wie kommt dieses Token dort hinein?

Das Anti-Panzer-Token, das Sie sehen, wird automatisch generiert und von FormTagHelper hinzugefügt.

Sie können diese automatische Funktion deaktivieren, indem Sie die asp-antiforgery="false" Attribut:

<form asp-controller="Account" asp-action="LogOff" asp-antiforgery="false" 
     method="post" id="logoutForm" class="navbar-right"> 
</form> 
1

Fälschungs Token überall in Ihrem Projekt, fügen Sie diesen Code in Ihre Application_Start Methode in der Datei Global.asax zu deaktivieren.

AntiForgeryConfig.SuppressIdentityHeuristicChecks = true