Authentification avec ASP.NET Core MVC : Un exemple pratique
Introduction
ASP.NET Core MVC offre un système d'authentification flexible et puissant pour sécuriser vos applications web. Dans cet article, nous allons explorer un exemple concret d'implémentation de l'authentification dans une application ASP.NET Core MVC.
Configuration de l'authentification
-
Création d'un projet ASP.NET Core MVC : Commencez par créer un nouveau projet ASP.NET Core MVC en utilisant Visual Studio ou l'interface de ligne de commande.
-
Activation de l'authentification : Dans le template de projet, sélectionnez l'option "Individual User Accounts" (ou "Individuelle") pour activer l'authentification basée sur les utilisateurs. Cela ajoutera automatiquement les dépendances et la configuration nécessaires.
-
Configuration de l'accès aux données : ASP.NET Core MVC utilise Entity Framework Core pour gérer les données. Assurez-vous que vous avez configuré une connexion à votre base de données, par exemple, une base de données SQL Server.
Implémentation de l'authentification
-
Contrôleurs et vues : Créez des contrôleurs et des vues pour gérer les pages de connexion, d'inscription et de profil utilisateur. Par exemple, un contrôleur
AccountController
pourrait gérer les actions de connexion (Login
), d'inscription (Register
) et de déconnexion (Logout
). -
Protection des ressources : Utilisez des attributs comme
Authorize
pour restreindre l'accès à des actions spécifiques aux utilisateurs authentifiés. Par exemple, vous pourriez protéger une page d'administration avec l'attribut[Authorize(Roles = "Admin")]
. -
Gestion des rôles : ASP.NET Core MVC vous permet de gérer les rôles des utilisateurs. Vous pouvez attribuer des rôles aux utilisateurs lors de leur inscription ou les modifier ultérieurement.
Code d'exemple
AccountController.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authentication;
using System.Threading.Tasks;
namespace MyWebApplication.Controllers
{
public class AccountController : Controller
{
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
public async Task Login(string username, string password)
{
// Vérification des identifiants
if (username == "admin" && password == "password")
{
// Authentification réussie
await HttpContext.SignInAsync(
Microsoft.AspNetCore.Http.Authentication.AuthenticationScheme.Cookies,
new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, username) }, CookieAuthenticationDefaults.AuthenticationScheme)));
return RedirectToAction("Index", "Home");
}
else
{
// Échec de l'authentification
ViewData["ErrorMessage"] = "Nom d'utilisateur ou mot de passe incorrect.";
return View();
}
}
[HttpGet]
public IActionResult Register()
{
return View();
}
[HttpPost]
public IActionResult Register(string username, string password)
{
// Enregistrement de l'utilisateur dans la base de données
// ...
return RedirectToAction("Login");
}
[Authorize]
public IActionResult Profile()
{
return View();
}
public async Task Logout()
{
await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
return RedirectToAction("Index", "Home");
}
}
}
Views/Account/Login.cshtml
@using Microsoft.AspNetCore.Mvc.TagHelpers
@if (ViewData.ContainsKey("ErrorMessage"))
{
@ViewData["ErrorMessage"]
}
Conclusion
Ce code d'exemple montre comment implémenter une authentification de base dans une application ASP.NET Core MVC. Vous pouvez l'adapter à vos propres besoins en ajoutant des fonctionnalités supplémentaires comme la validation des mots de passe, la gestion des rôles, la sécurité des mots de passe, etc. En utilisant ASP.NET Core MVC, vous pouvez facilement sécuriser vos applications web et contrôler l'accès aux ressources sensibles.