[img]https://i .sstatic.net/TSTTOzJj.png[/img]
Ich bin nicht sicher, wozu die Login?ReturnUrl dienen soll oder was sie anzeigt. Ich kann jedoch erkennen, dass das Cookie die Rollen (und die richtige) zum Senden der Anfrage zu enthalten scheint.
Ich habe versucht, die JWT- und CSRF-Tokens zu ändern, aber sie sind beide auf SameSiteMode.None setzen und auf „true“ sichern. Das JWT-Token ist aus Sicherheitsgründen HttpOnly.
AddVoertuig (Endpunkt, den ich verwenden möchte)
Code: Select all
[HttpPost("AddVoertuig")]
[Authorize(Roles = "Particulier,Zakelijk,Wagenparkbeheerder")]
public async Task AddVoertuig([FromBody] Voertuig voertuig)
{
if (voertuig == null)
{
return BadRequest("Er is iets fout gegaan tijdens het toevoegen. Probeer het opnieuw!");
}
_context.Voertuigen.Add(voertuig);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetVoertuig), new { Id = voertuig.VoertuigID }, voertuig);
}
Code: Select all
try {
const resultaat = await fetchCsrf("http://localhost:5202/api/VoertuigBeheer/AddVoertuig", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
credentials: "include",
body: JSON.stringify(voertuigData)
});
if (resultaat.ok) {
alert("Voertuig toegevoegd!");
formulier.reset();
} else {
alert("Er is iets fout gegaan tijdens het toevoegen van het voertuig. Probeer het opnieuw!");
}
} catch (error) {
console.error("Fout: ", error);
}
Code: Select all
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(
System.Text.Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])
),
};
options.Events = new JwtBearerEvents
{
OnMessageReceived = context =>
{
var token = context.Request.Cookies["jwtToken"];
if (!string.IsNullOrEmpty(token))
{
context.Token = token;
}
return Task.CompletedTask;
}
};
});