0% ont trouvé ce document utile (0 vote)
57 vues12 pages

DOTNET DEMO3 Code Snippets

Ce document décrit les étapes de mise en œuvre des états de sessions dans une application ASP.NET Core, incluant la création d'une base de données pour les utilisateurs, la configuration des formulaires d'authentification et d'inscription, ainsi que l'utilisation des sessions pour gérer les connexions des utilisateurs. Il fournit également des extraits de code pour la création de tables, l'insertion de données, et la gestion des sessions dans les contrôleurs. Enfin, il aborde des fonctionnalités supplémentaires telles que la déconnexion et l'inscription d'un utilisateur.

Transféré par

badrootlb12
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
57 vues12 pages

DOTNET DEMO3 Code Snippets

Ce document décrit les étapes de mise en œuvre des états de sessions dans une application ASP.NET Core, incluant la création d'une base de données pour les utilisateurs, la configuration des formulaires d'authentification et d'inscription, ainsi que l'utilisation des sessions pour gérer les connexions des utilisateurs. Il fournit également des extraits de code pour la création de tables, l'insertion de données, et la gestion des sessions dans les contrôleurs. Enfin, il aborde des fonctionnalités supplémentaires telles que la déconnexion et l'inscription d'un utilisateur.

Transféré par

badrootlb12
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Démonstration 3: Les états des sessions

dans l’[Link] Core


Ce document résume les code snippets utiliser dans DOTNET_DEMO3:

Démonstration 3: Les états des sessions dans l’[Link] Core


Etape 2: Vérification de la connexion avec la base de données
Création de la table Utilisateurs:
Insertion des données dans la table utilisateurs:
Etape 3 : Préparation des pages Authentification / Inscription
Le formulaire du Login :
Le formulaire Register :
Le lien d'authentification:
Etape 4 : Installation et configuration des état de sessions
Configuration de la session
Activer l'utilisation des sessions
Etape 5 : Configuration du formulaire d’Authentification
La bibliothéque des session
La classe users
Les attributs de la class LoginModel
Lire les données a partir du formulaire
Vérification des données saisies
La méthode VerifierUtilisateurExiste()
La méthode VerifierPw()
La méthode AjouterUtilisateur()
Etape 6 : Utilisation des sessions pour Controller et Sauvegarder les données des utilisateurs
Sessions pour le contrôle (OnPost)
Initialisation des sessions (OnGet)
Sessions pour enregistrer les données des utilisateurs et redirection
Afficher les données des utilisateurs
Modifier le contenu d'une page à l'aide des sessions
Redirection vers la page d'authentification à l'aide des sessions
Etape Additionnel 1: Déconnexion d'un utilisateur
Etape Additionnel 2: Inscription d'un utilisateur

NB: Etape 1 et 7 sont réalisés à l'aide de la GUI de l'[Link]

Etape 2: Vérification de la connexion avec la base de


données
Création de la table Utilisateurs:
CREATE TABLE users(
id INT NOT NULL PRIMARY KEY IDENTITY,
firstName VARCHAR (100) NOT NULL,
lastName VARCHAR(100) NOT NULL,
userLogin VARCHAR(100) NOT NULL UNIQUE,
userPw VARCHAR (150) NOT NULL,
userType VARCHAR(20) NOT NULL );

Insertion des données dans la table utilisateurs:

INSERT INTO users(firstName,lastName,userLogin,userPw, userType) VALUES


('Jhon','Doe','admin@emsi','123456','admin');

INSERT INTO users(firstName,lastName,userLogin,userPw, userType) VALUES


('Jane','Doe','Jane@emsi','123456','user');

Etape 3 : Préparation des pages Authentification /


Inscription
Le formulaire du Login :

Dans un nouveau fichier nommée : pages/utilisateur/[Link], Modifier le code pour


Ajouter un titre de la page Login:

@page
@model DOTNET_DEMO.[Link]
@{
ViewData["Title"] = "Authentification";
}
<br />
<h2 class="text-center">Authentification</h2>
<hr />
//Formulaire ..

Ajout du formulaire:

<!--Titre-->
<form method="post" class="border rounded p-4">
<div class="form-outline mb-4">
<label class="form-label" for="email">Adresse electronique</label>
<input class="form-control" type="email" id="email" name="email"/>
</div>

<div class="form-outline">
<label class="form-label" for="pw">Mot de passe</label>
<input class="form-control" type="password" id="pw" name="pw" />
</div>

<div class="row mb-4">


<div class="col">
<a href="#!">Mot de passe oublié?</a>
</div>
</div>
<div class="form-row text-center">
<input class="col-md-10 btn btn-primary btn-block m-1" type="submit"
value="Se connecter" />
</div>

<div class="text-center">
<p>Créer un compte? <a asp-area="" asp-
page="/Utilisateur/Register">S'inscrire</a></p>
</div>
</form>

Le formulaire Register :

Dans le nouveau fichier crée pages/utilisateur/[Link]. Modifier le code pour Ajouter


un titre de la page Register, et après ajouter le forumlaire:

<!--Titre-->
<form method="post" class="border rounded p-4">
<div class="form-row mb-4 d-flex flex-row">
<div class="form-group col-md-6 m-1">
<label for="firstName">Nom </label>
<input class="form-control" type="text" id="firstName"
name="firstName" />
</div>

<div class="form-group col-md-6 m-1">


<label for="lastName">Prenom </label>
<input class="form-control" type="text" id="lastName"
name="lastName" />
</div>
</div>

<div class="form-row mb-4 d-flex flex-row">


<div class="form-group col-md-8 m-1">
<label class="form-label" for="email">Adresse electronique</label>
<input class="form-control" type="email" id="email" name="email" />
</div>

<div class="form-group col-md-4 m-1">


<label class="form-label" for="pw">Mot de passe </label>
<input class="form-control" type="password" id="pw" name="pw" />
</div>
</div>
<div class="form-row text-center">
<button type="submit" class="col-md-10 btn btn-primary btn-block m-1">
S'inscrire</button>
</div>

</form>
Le lien d'authentification:

Dans le nouveau fichier crée pages/shared/_Layout.cshtml:

<header>
...
<!--Les autres liens-->
<ul class="navbar-nav navbar-right">
<li class="nav-item">
<p class="nav-link">
<a class="text-dark" asp-area="" asp-page="/Utilisateur/Logout">
Se deconnecter</a>
</p>
</li>
</ul>
...
</header>

Etape 4 : Installation et configuration des état de sessions


Configuration de la session

Ce service doit être ajouter dans le fichier [Link] avant le build de l'application:

// Add services to the container.


[Link]();
[Link]();

[Link]();

[Link](options =>
{
[Link] = ".[Link]";
[Link] = [Link](10);
[Link] = true;
});

var app = [Link]();

Activer l'utilisation des sessions

Avant l'ajout des pages Razor:

//...
[Link]();
[Link]();
//...

Vous pouvez ici Exécuter pour vérifier vos modifications


Etape 5 : Configuration du formulaire d’Authentification
La bibliothéque des session

Ajouter cette bibliothéque dans tous les modéles ".[Link]" où on vas utiliser ou appeler
les valeurs sauvegarder dans les sessions:

using [Link];

La classe users

Après la classe LoginModel, dans le même name space DOTNET_DEMO.[Link]


ajouter la classe users:

public class Utilisateur {


public int id;
public string firstName = "";
public string lastName = "";
public string userLogin = "";
public string userPw = "";
public string userType = "";
}

Les attributs de la class LoginModel

Dans la classe LoginModel, avant la méthode OnGet(), ajouter les attributs:

public class LoginModel : PageModel


{
public Utilisateur utilisateurData = new Utilisateur();
public string msgError = "";
//...
}

Lire les données a partir du formulaire

Dans la classe LoginModel, après la méthode OnGet(), crée la fonction OnPost() :

public void OnGet(){}


public void OnPost()
{
[Link] = [Link]["email"];
[Link]= [Link]["pw"];
}

Vérification des données saisies

Dans la méthode OnPost après la lecture des données ajouter la vérification des valeurs:

if ([Link] == "" || [Link] == "")


{
msgError = "Veuillez saisir Votre login et votre mot de passe";
return;
}
Dans la page [Link] ajouter cette condition avant le formulaire:

<div ...>
@if([Link]!="")
{
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<small>@[Link]</small>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-
label="Close"></button>
</div>
}
<form>
...

Dans l'attribut value de l'input de l'email, ajouter la valeur de l'objet:

<input class="form-control" type="email" id="email" name="email"


value="@[Link]"/>

Vous pouvez ici Exécuter pour vérifier le bon déroulement de vos modifications

La méthode VerifierUtilisateurExiste()

Dans la classe users, après les attributs, ajouter la méthode:

public bool VerifierUtilisateurExiste()


{
try
{
string connectionString = "votre chaine de connection;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
[Link]();
String sql = "SELECT * FROM users WHERE userLogin=@Login";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
[Link]("@Login", [Link]);
using (SqlDataReader reader = [Link]())
{
if ([Link]())
return true;
}
}
}
return false;
}
catch (Exception ex)
{
[Link]("Exception: " + [Link]());
return false;
}
}
La méthode VerifierPw()

Dans la classe users, après la méthode VerifierUtilisateurExiste(), ajouter la méthode:

public bool VerifierPw()


{
try
{
string connectionString = "votre chaine de connection;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
[Link]();
String sql = "SELECT * FROM users WHERE userLogin=@Login AND
userPw=@Pw";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
[Link]("@Login", [Link]);
[Link]("@Pw", [Link]);
using (SqlDataReader reader = [Link]())
{
if ([Link]())
{
[Link] = reader.GetInt32(0);
[Link] = [Link](1);
[Link] = [Link](2);
[Link] = [Link](5);
return true;
}
}
}
}
return false;
}
catch (Exception ex)
{
[Link]("Exception: " + [Link]());
return false;
}
}

La méthode AjouterUtilisateur()

Dans la classe users, après la méthode VerifierPw(), ajouter la méthode:

public bool AjouterUtilisateur()


{
try
{
string connectionString = "votre chaine de connection;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
[Link]();
String sql = "INSERT INTO users "+
"(firstName,lastName,userLogin,userPw,userType)" +
"values(@firstName,@lastName,@userLogin,@userPw,@userType);";
using (SqlCommand cmd = new SqlCommand(sql, connection))
{
[Link]("@firstName", [Link]);
[Link]("@lastName", [Link]);
[Link]("@userLogin", [Link]);
[Link]("@userPw", [Link]);
[Link]("@userType", "user");
[Link]();
return true;
}
}
}
catch (Exception ex)
{
[Link]("Exception: " + [Link]());
return false;
}
}

Etape 6 : Utilisation des sessions pour Controller et


Sauvegarder les données des utilisateurs
Sessions pour le contrôle (OnPost)

Dans la méthode OnPost() du modèle LoginModel:

if (![Link]())
{
[Link]("userNotExist", "Cet utilisateur n'existe
pas");
return;
}

if (![Link]())
{
[Link]("userPwError", "Le mot de passe saisi est
incorrecte");
return;
}

Dans la page [Link] avant l'affichage du formulaire

...
//Utilisateur n'existe pas
@if ([Link]("userNotExist") != null)
{
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<small>@[Link]("userNotExist")</small>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-
label="Close"> </button>
</div>
}
//Utilisateur existe && erreur de mp
@if ([Link]("userPwError") != null)
{
<div class="alert alert-warning alert-dismissible fade show" role="alert"
<small>@[Link]("userPwError")</small>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-
label="Close"> </button>
</div>
}
<form>

Initialisation des sessions (OnGet)

Dans la méthode OnGet() de LoginModel on supprimer les initialisation des sessions:

public void OnGet()


{
[Link]("userNotExist");
[Link]("userPwError");
}

Vous pouvez ici Exécuter pour vérifier le bon déroulement de vos modifications

Sessions pour enregistrer les données des utilisateurs et redirection

Ajouter une section else{} si le retour de [Link]() est vraie:

if (![Link]())
{
//...
}
else
{
[Link]("userAuthenticated", "true");

[Link]("userId",
[Link]([Link]));
[Link]("userFirstName",
[Link]([Link]));
[Link]("userLastName",
[Link]([Link]));
[Link]("userLogin",
[Link]([Link]));
[Link]("userType",
[Link]([Link]));

[Link]("/Produit/Index");
}

Afficher les données des utilisateurs

Modifier le lien qu'on ajouter dans la page _layout.cshtml:

<ul class="navbar-nav navbar-right">


<li class="nav-item">
@if ([Link]("userAuthenticated") == null)
{
<a class="nav-link text-dark" asp-area=""
asp-page="/Utilisateur/Login"> Authentification </a>
}
else
{
<p class="nav-link">
@[Link]("userFirstName")
@[Link]("userLastName")
<a class="text-dark" asp-area="" asp-page="/Utilisateur/LogOut">
Se deconnecter
</a>
</p>
}
</li>
</ul>

Vous pouvez ici Exécuter pour vérifier le bon déroulement de vos modifications

Modifier le contenu d'une page à l'aide des sessions

Manipuler l'affichage des boutons des produits dans la page Produit/[Link]:

<h2 class="text-center">Liste des produits</h2>


@if ([Link]("userType") == "admin")
{
<a class="btn btn-primary btn-sm" asp-page="/Produit/Create">Nouveau
Produit</a>
}
....
<table class="table">
<thead>
<tr class="text-center">
...
<th>Prix</th>
@if ([Link]("userType") == "admin")
{
<th>Action</th>
}
</tr>
</thead>
<tbody>
...
<td>@item._prix</td>
@if ([Link]("userType") == "admin")
{
<td class="text-center">
<a class="btn btn-success btn-sm" href="/Produit/Edit?
id=@item._id">Modifier</a>
<a class="btn btn-danger btn-sm" href="/Produit/Delete?
id=@item._id">Supprimer</a>
</td>
}
</tr>
...
Vous pouvez ici Exécuter pour vérifier le bon déroulement de vos modification

Redirection vers la page d'authentification à l'aide des sessions

Dans le modèle Produit/[Link] de la page Produit/[Link] ajouter la condition


dans la méthode OnGet():

public void OnGet()


{
if([Link]("userAuthenticated") != "true")
[Link]("/Utilisateur/Login");

Vous pouvez ici Exécuter pour vérifier le bon déroulement de vos modification

Etape Additionnel 1: Déconnexion d'un utilisateur


Vider la session et ajouter une redirection dans la méthode OnGet() du modèle
[Link]:

public void OnGet()


{
[Link]();
[Link]("/Utilisateur/Login");
}

Vous pouvez ici Exécuter pour vérifier le bon déroulement de vos modification

Etape Additionnel 2: Inscription d'un utilisateur


Les attributs de la classe RegisterModel: Dans la classe RegisterModel, avant la méthode
OnGet(), ajouter les attributs:

public Utilisateur utilisateurData = new Utilisateur();


public string msgError = "";

Lire les données a partir du formulaire: Dans la classe RegisterModel, après la méthode
OnGet(), crée la fonction OnPost()

public void OnGet()


{}
public void OnPost()
{
[Link] = [Link]["firstName"];
[Link] = [Link]["lastName"];
[Link] = [Link]["email"];
[Link] = [Link]["pw"];
}

Vérification des données saisies: Dans la méthode OnPost() après la lecture des données
ajouter la vérification des valeurs:
if ([Link] ==""|| [Link]=="" ||
[Link] == "" || [Link] == "")
{
msgError = "Veuillez saisir vos données";
return;
}

Dans la page [Link] ajouter cette condition avant le formulaire:

@if ([Link] != "")


{
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<small>@[Link]</small>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-
label="Close"> </button>
</div>
}
<form/>

Sessions pour le contrôle (OnPost): Dans la méthode OnPost() du modèle LoginModel:

if (![Link]())
{
[Link]("userNotAdded", "Erreur d'inscription, Essayer
plus tard");
[Link]("/Utilisateur/Logout");
}
else
{
[Link]("/Utilisateur/Login");
}

Dans la page [Link] avant l'affichage du formulaire:

@if ([Link]("userNotAdded") != null)


{
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<small>@[Link]("userNotAdded") </small>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-
label="Close"> </button>
</div>
}
<form>

Vous aimerez peut-être aussi