У меня угловое 4 приложение с .net core Api. Я хочу поставить на некоторые конечные точки проверку Анти-подделки. Таким образом мне удалось получить токен в браузере куки.
Это startup.cs - Настройка:
if (env.IsDevelopment())
{
}
app.UseDeveloperExceptionPage();
app.UseCors("AllowAll");
app.Use(next => context =>
{
string method = context.Request.Method;
if (method == "GET")
{
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions()
{
HttpOnly = false,
});
}
return next(context);
});
А это из ConfigureServices:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme =
JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme =
JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(o =>
{
o.Authority = Configuration["IdentityServer"];
o.Audience = "MyApi";
o.RequireHttpsMetadata = false;
});
services.AddCors(o => o.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
}));
services.AddAntiforgery(options =>
{
options.HeaderName = "X-XSRF-TOKEN";
options.RequireSsl = false;
options.SuppressXFrameOptionsHeader = false;
});
Это в контроллере:
[Authorize]
[ValidateAntiForgeryToken]
[HttpPost, Route("irrelevant")]
public IActionResult CalledByTheFront([FromBody] irrelevant)
{
return Ok("irrelevant");
}
куки, которые я нашел в браузере
И запрос:
Что я делаю не так?
Постскриптум Кроме того, знаете ли вы, почему файлы cookie в браузере обновляются только при перезапуске API, хотя каждый запрос GET имеет файл cookie в заголовке?