Gestion de session ASP.NET [Exemple]

โšก Rรฉsumรฉ intelligent

La gestion des sessions ASP.NET permet ร  une application HTTP sans รฉtat de conserver les donnรฉes utilisateur entre les requรชtes. Ce document explique ViewState, l'objet Session permettant de stocker les paires clรฉ-valeur, prรฉsente un exemple concret, les modes d'รฉtat de session, la configuration du dรฉlai d'expiration et les avantages de l'รฉtat de session.

  • ๐ŸŒ HTTP sans รฉtat : Le protocole HTTP ne conserve pas les donnรฉes entre les requรชtes ; ASP.NET ajoute donc des mรฉcanismes pour prรฉserver lโ€™รฉtat.
  • ๐Ÿ‡ง๐Ÿ‡ท ViewState : ViewState transmet automatiquement les valeurs des contrรดles d'une page ร  l'autre.
  • (I.e. Objet de session : Session[โ€œKeyโ€] stocke et rรฉcupรจre les paires clรฉ-valeur tout au long du cycle de vie de lโ€™application.
  • โš™๏ธ Modes d'รฉtat : L'รฉtat de session peut รชtre stockรฉ dans le processus, sur un serveur d'รฉtat, dans SQL Server ou dans un magasin personnalisรฉ.
  • ๏ธ Temps mort: Le dรฉlai d'expiration de sessionState dans web.config contrรดle la durรฉe de vie d'une session.

Tutoriel sur la gestion des sessions ASP.NET avec exemple

Gestion des sessions ASP.NET

Le protocole HTTP sur lequel fonctionnent toutes les applications Web est un protocole sans รฉtat. Par apatride, cela signifie simplement que les informations ne sont pas conservรฉes dโ€™une demande ร  lโ€™autre.

Par exemple, si vous aviez une page de connexion comportant 2 zones de texte, une pour le nom et lโ€™autre pour le mot de passe. Lorsque vous cliquez sur le bouton Connexion sur cette page, l'application doit s'assurer que le nom d'utilisateur et le mot de passe sont transmis ร  la page suivante.

En ASP.NET, cela se fait de plusieurs maniรจres. La premiรจre consiste ร  utiliser le concept de ViewState. ASP.NET y stocke automatiquement le contenu de tous les contrรดles et veille ร  ce que ce contenu soit transmis ร  la page suivante. Ceci est rรฉalisรฉ grรขce ร  une propriรฉtรฉ appelรฉe ViewState.

Il n'est pas idรฉal pour un dรฉveloppeur de modifier quoi que ce soit dans l'รฉtat d'affichage. En effet, cela doit รชtre gรฉrรฉ uniquement par ASP.Net.

Objet Session ASP.NET

Lโ€™autre mรฉthode consiste ร  utiliser un objet appelรฉ ยซ objet de session ยป. L'objet Session est disponible tout au long du cycle de vie de l'application. Vous pouvez stocker n'importe quel nombre de paires clรฉ-valeur dans l'objet Session. Ainsi, sur n'importe quelle page, vous pouvez stocker une valeur dans l'objet Session via la ligne de code ci-dessous.

Session["Key"] = value

La valeur est stockรฉe dans un objet Session, et la clรฉ sert ร  lui donner un nom. Cela permet de rรฉcupรฉrer la valeur ultรฉrieurement. Pour ce faire, il suffit d'exรฉcuter la commande ci-dessous.

Session["Key"]

Exemple d'objet Session ASP.NET

Dans cet exemple, nous allons utiliser l'objet Session pour stocker le nom saisi dans le champ de texte ยซ Nom ยป de la page. Nous rรฉcupรฉrerons ensuite cette valeur et l'afficherons correctement. Ajoutons le code ci-dessous au fichier Demo.aspx.cs.

Utiliser l'objet Session

protected void btnSubmit_Click(object sender, EventArgs e)
{
	Session["Name"] = txtName.Text;

	Response.Write(Session["Name"]);

	lblName.Visible = false;
	txtName.Visible = false;
	lstLocation.Visible = false;
	chkC.Visible = false;
	chkASP.Visible = false;
	rdMale.Visible = false;
	rdFemale.Visible = false;
	btnSubmit.Visible = false;
}

Code Explication:-

  1. La premiรจre ligne de code rรฉcupรจre la valeur du champ de texte ยซ Nom ยป et la stocke dans lโ€™objet Session. En spรฉcifiant le code Session["Name"], nous attribuons ร  la propriรฉtรฉ le nom ยซ Name ยป. Ce nom facilite sa rรฉcupรฉration ultรฉrieure.
  2. La ligne de code suivante rรฉcupรจre la valeur stockรฉe de l'objet Session. Il รฉcrit ensuite cette valeur via la mรฉthode ยซ Response.Write ยป au client.
  3. Enfin, nous rendons invisibles tous les champs du formulaire. Sans cela, tous les champs et les valeurs de rรฉponse seraient affichรฉs simultanรฉment.

Une fois les modifications ci-dessus effectuรฉes, vous obtiendrez le rรฉsultat suivant.

Sortie :

Utiliser l'objet Session

ร€ partir du rรฉsultat, vous pouvez voir que la valeur Session de name a รฉtรฉ rรฉcupรฉrรฉe et affichรฉe dans le navigateur.

Modes d'รฉtat de session ASP.NET

ASP.NET peut stocker les donnรฉes de session ร  plusieurs endroits, appelรฉs modes d'รฉtat de session. Le mode choisi influe sur les performances, la scalabilitรฉ et la conservation des donnรฉes aprรจs un redรฉmarrage de l'application. Le tableau ci-dessous les compare :

Mode Oรน l'รฉtat est stockรฉ Meilleur pour
En cours Dans la mรฉmoire du serveur web (par dรฉfaut) Applications mono-serveur : les plus rapides, mais perdues au redรฉmarrage
Serveur d'รฉtat Un processus de service d'รฉtat ASP.NET distinct Fermes de serveurs Web ; rรฉsiste aux redรฉmarrages d'application
Serveur SQL Une base de donnรฉes SQL Server Les fermes Web nรฉcessitent un รฉtat durable et รฉvolutif
Encadrement Sur Mesure Un fournisseur personnalisรฉ que vous implรฉmentez Magasins spรฉcialisรฉs tels que Redis
de ร‰tat de la session dรฉsactivรฉ Applications qui n'ont pas besoin de sessions

InProc est la solution par dรฉfaut et la plus rapide, mais pour les dรฉploiements ร  charge รฉquilibrรฉe, StateServer ou SQLServer conservent les sessions disponibles sur plusieurs serveurs.

Comment configurer le dรฉlai d'expiration de session dans ASP.NET

Une session n'est pas permanente ; elle expire aprรจs une pรฉriode d'inactivitรฉ. Vous pouvez configurer ce dรฉlai d'expiration dans le fichier web.config ร  l'aide de l'รฉlรฉment sessionState, oรน la valeur du dรฉlai est exprimรฉe en minutes :

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="20" />
  </system.web>
</configuration>

Vous pouvez รฉgalement le dรฉfinir dans le code avec Session.Timeout = 30;Le dรฉlai d'expiration par dรฉfaut est de 20 minutes. Choisir un dรฉlai d'expiration plus court libรจre plus rapidement la mรฉmoire du serveur et amรฉliore la sรฉcuritรฉ, tandis qu'un dรฉlai d'expiration plus long permet aux utilisateurs de rester connectรฉs plus longtemps.

Avantages et inconvรฉnients de l'รฉtat de session

L'รฉtat de session est pratique, mais il prรฉsente des inconvรฉnients qu'il convient de prendre en compte avant de s'y fier fortement.

Avantages :

  • Simple d'utilisation pour stocker des donnรฉes par utilisateur, comme celles d'une boutique.ping Dรฉtails du panier ou de connexion.
  • Peut stocker des objets complexes, et pas seulement des chaรฎnes de caractรจres.
  • Les donnรฉes sont conservรฉes sur le serveur, ce qui les rend plus sรฉcurisรฉes que le stockage cรดtรฉ client.

Inconvรฉnients :

  • Le mode InProc consomme de la mรฉmoire serveur et ne s'adapte pas ร  l'รฉchelle d'une ferme de serveurs web.
  • Les donnรฉes de session sont perdues lorsque la session expire ou que l'application redรฉmarre (en mode InProc).
  • Le stockage de grandes quantitรฉs de donnรฉes par utilisateur peut nuire aux performances en cas de forte charge.

FAQ

Oui. Les assistants IA peuvent gรฉnรฉrer le code permettant de stocker et de lire les valeurs de session, suggรฉrer le mode d'รฉtat appropriรฉ et รฉcrire les paramรจtres du fichier web.config. RevExaminez le code gรฉnรฉrรฉ pour confirmer qu'il correspond ร  vos besoins en matiรจre d'รฉvolutivitรฉ et de sรฉcuritรฉ.

Oui. Les outils d'analyse de code basรฉs sur l'IA peuvent signaler des risques tels que la fixation de session, l'absence de cookies HTTPS uniquement ou le stockage de donnรฉes sensibles en session. Considรฉrez ces rรฉsultats comme des indications et confirmez les corrections par des tests de sรฉcuritรฉ avant le dรฉploiement.

L'รฉtat de session stocke les donnรฉes propres ร  la session d'un utilisateur, tandis que l'รฉtat de l'application stocke les donnรฉes partagรฉes par tous les utilisateurs de l'application. Utilisez l'รฉtat de session pour les valeurs spรฉcifiques ร  chaque utilisateur et l'รฉtat de l'application pour les donnรฉes globales telles que les compteurs ou la configuration.

Non. Chaque utilisateur dispose d'une session distincte, identifiรฉe par un identifiant unique stockรฉ dans un cookie. Un utilisateur ne peut pas accรฉder aux donnรฉes de session d'un autre utilisateur ; c'est pourquoi le systรจme de sessions est utilisรฉ pour les donnรฉes propres ร  chaque utilisateur.

Rรฉsumez cet article avec :