Problème de redirect de l'API corrigé.

This commit is contained in:
MarcEricMartel 2022-11-01 08:05:32 -07:00
parent 4558617f30
commit 00eb05a282
3 changed files with 25 additions and 6 deletions

View File

@ -23,8 +23,27 @@ builder.Services.AddCors(options => {
});
builder.Services.AddControllers();
builder.Services.AddAuthorization();
builder.Services.AddAuthentication().AddIdentityCookies();
// Source: https://github.com/dotnet/aspnetcore/issues/9039
builder.Services.ConfigureApplicationCookie(o => {
o.Events = new CookieAuthenticationEvents() {
OnRedirectToLogin = (ctx) => {
if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200) {
ctx.Response.StatusCode = 401;
}
return Task.CompletedTask;
},
OnRedirectToAccessDenied = (ctx) => {
if (ctx.Request.Path.StartsWithSegments("/api") && ctx.Response.StatusCode == 200) {
ctx.Response.StatusCode = 403;
}
return Task.CompletedTask;
}
};
});
builder.Services.AddAuthentication("Cookies").AddIdentityCookies();
builder.Services.AddIdentityCore<InventoryUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<InventoryContext>()
@ -52,7 +71,6 @@ if (app.Environment.IsDevelopment()) {
app.UseHttpsRedirection();
app.UseCors(MyAllowSpecificOrigins);
app.UseAuthorization();
app.UseAuthentication();

View File

@ -29,7 +29,7 @@ const Home = () => {
<h4 className="home-subtitle">(à Ginette et Monique)</h4>
<img src="/images/LesGrossesMitaines.png" className="home-img" alt="home"/>
<br/>
<h2 className="home-description">Des produits bien commodes faits par des aînées d'expérience.</h2>
<h2 className="home-description">Des produits bien commodes faits par des aînées d'expérience. {document.cookie}</h2>
</div>
<FeaturedList
products={products}

View File

@ -5,11 +5,12 @@ const Login = () => {
const [username, setUsername] = useState("");
const [password, setPassword] = useState("");
const [kookees, setCookies] = useState("");
const handleLogin = async (e) => {
e.preventDefault();
const response = await fetch(`https://localhost:7292/api/Login?rememberme=true`, {
const response = await fetch(`https://localhost:7292/api/Login?rememberMe=true`, {
method: 'POST',
headers: {
'Accept': 'application/json',
@ -17,13 +18,13 @@ const Login = () => {
},
body: JSON.stringify({ username, password })
})
// Partie de display d'erreur ou de redirection (faudrait checker pour se faire un state de connexion).
// Partie de display d'erreur ou de redirection (faudrait checker pour se faire un state de connexion avec un cookie pour react).
}
return (
<div className="inventaire-form-container">
<h1>{kookees}</h1>
<form className="form-horizontal" onSubmit={handleLogin}>
<h4 className="text-center">Connexion</h4>
<div className="form-group">