11 Fév2016
Formulaire d'authentification avec cookies
Objectifs:
- Gérer l'état d'une application ASP.net
- Utiliser les variables d'état côté client
- Manipuler la requête et la réponse avec les objets Request et Response
- Récupérer les données envoyées par les méthode GET et POST
- Créer et récupérer des cookies
Énoncé:
Améliorer l’exercice Formulaire d'authentification avec redirection en ajoutant une case à coché « Se souvenir de moi » au niveau du formulaire d’authentification afin de permettre à un utilisateur déjà authentifié de demander la page secret.aspx directement.
Page login.aspx
Code Web Form
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="login2.aspx.cs" Inherits="tp3_exelib.Exercices.login2" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <h3>Authentification</h3> <div> <asp:Label ID="lblErreur" runat="server" style="color: #FF0000; font-weight: 700;"></asp:Label> <br /> <br /> </div> <div> <asp:Label ID="Label1" runat="server" Text="Pseudo:"></asp:Label> <asp:TextBox ID="txtPseudo" runat="server"></asp:TextBox> <br /> <br /> <asp:Label ID="Label2" runat="server" Text="Mot de passe: "></asp:Label> <asp:TextBox ID="txtPass" runat="server" TextMode="Password"></asp:TextBox> <br /> <br /> <asp:CheckBox ID="CheckBox1" runat="server" Text="Se souvenir de moi" /> <br /> <br /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Se Connecter" /> </div> </form> </body> </html>
Code Behind
public partial class login2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString["erreur"] != null) { lblErreur.Text = "Vous devez vous connecter pour voir la page secrète!"; } } } protected void Button1_Click(object sender, EventArgs e) { if(txtPseudo.Text == "exelib.net" && txtPass.Text == "123456") { if (CheckBox1.Checked) { Response.Cookies["login"].Value = txtPseudo.Text; Response.Cookies["login"].Expires = DateTime.Now.AddMonths(1); } Server.Transfer("secret.aspx"); } else { lblErreur.Text = "Pseudo ou Mot de passe incorrect!"; } } }
Page secret.aspx
Code Web Form
<body> <form id="form1" runat="server"> <h3>Page secrète</h3> <div> <asp:Label ID="lblSecret" runat="server" style="font-weight: 700"></asp:Label> </div> </form> </body>
Code Behind
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.Cookies["login"] != null) { lblSecret.Text = "Bienvenue " + Request.Cookies["login"].Value; lblSecret.Text += "<br>Vos informations confidentielles (avec cookies)"; } else if (Request.Form["txtPseudo"] != null) { lblSecret.Text = "Bienvenue " + Request.Form["txtPseudo"]; lblSecret.Text += "<br>Vos informations confidentielles"; } else { Response.Redirect("login2.aspx?erreur=1"); } } }