Fiz*_*z97 3 c# csrf razor asp.net-core-mvc asp.net-core
使用由最新(RC2)VS2015 ASP.NET Core模板创建的开箱即用的MVC应用程序,文件_LoginPartial.cshtml在共享的_Layout.cshtml文件中呈现为部分._LoginPartial具有以下内容:
@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>
}
Run Code Online (Sandbox Code Playgroud)
当这被渲染到页面中时,这是结果(来自视图源):
<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 user@email.com!</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>
Run Code Online (Sandbox Code Playgroud)
不要对ASP.NET不感兴趣,但那个令牌是如何进入的呢?我还在AntiForgery上为整个解决方案找到了一个find-in-files,唯一的命中是[ValidateAntiForgeryToken]project.lock.json中的标签或条目.
我想通过故意在请求中省略令牌来验证我的验证标签是否正常工作,但是当为我添加令牌(?)时我无法做到这一点.
Kév*_*let 10
不要对ASP.NET不感兴趣,但那个令牌是如何进入的呢?
您看到的防伪令牌是自动生成并添加的FormTagHelper.
您可以通过添加asp-antiforgery="false"属性来禁用此自动功能:
<form asp-controller="Account" asp-action="LogOff" asp-antiforgery="false"
method="post" id="logoutForm" class="navbar-right">
</form>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |