Cette documentation est archivée et n’est pas conservée.

Login, classe

Mise à jour : novembre 2007

Fournit des éléments d'interface utilisateur permettant de se connecter à un site Web.

Espace de noms :  System.Web.UI.WebControls
Assembly :  System.Web (dans System.Web.dll)

[BindableAttribute(false)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public class Login : CompositeControl
/** @attribute BindableAttribute(false) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal) */
public class Login extends CompositeControl
public class Login extends CompositeControl
<asp:Login />

Le contrôle Login est un contrôle composite qui fournit tous les éléments communs de l''interface utilisateur nécessaire pour authentifier un utilisateur sur un site Web. Les trois éléments suivants sont requis pour tous les scénarios de connexion :

  • Un nom d'utilisateur unique pour identifier l'utilisateur.

  • Un mot de passe pour vérifier l'identité de l'utilisateur.

  • Un bouton de connexion pour envoyer les informations de connexion au serveur.

Le contrôle Login fournit également les éléments facultatifs de l'interface utilisateur suivants qui prennent en charge des fonctions supplémentaires :

  • Lien pour un rappel de mot de passe.

  • Une case à cocher de mémorisation du mot de passe pour conserver les informations de connexion d'une session à l'autre.

  • Un lien d'aide pour les utilisateurs qui ont des difficultés pour se connecter.

  • Lien Inscrire un utilisateur qui redirige les utilisateurs vers une page d'inscription.

  • Texte d'instruction qui apparaît sur le formulaire de connexion.

  • Texte d'erreur personnalisé qui s'affiche lorsque l'utilisateur clique sur le bouton de connexion sans remplir les champs de nom d'utilisateur ou de mot de passe.

  • Texte d'erreur personnalisé qui s'affiche si la connexion échoue.

  • Action personnalisée qui se produit lorsque la connexion est réussie.

  • Façon de masquer le contrôle de connexion si l'utilisateur est déjà connecté au site.

Pour obtenir un tableau affichant les contrôles requis et les contrôles facultatifs, consultez la propriété LayoutTemplate.

Remarque :

Si vous n'êtes pas familiarisé avec le jeu de contrôles de connexion disponibles dans ASP.NET, consultez Vue d'ensemble des contrôles de connexion ASP.NET avant de continuer. Pour obtenir la liste des autres rubriques relatives aux contrôles de connexion et à l'appartenance (membership), consultez Gestion des utilisateurs à l'aide de l'appartenance.

Note de sécurité :

Accepter des entrées d'utilisateur constitue une menace potentielle pour la sécurité. Les utilisateurs mal intentionnés peuvent envoyer des données afin de détecter des lacunes ou d'exécuter des programmes qui essaient des mots de passe générés. Pour renforcer la sécurité lorsque vous travaillez avec une entrée d'utilisateur, vous devez utiliser les fonctionnalités de validation de votre contrôle et sécuriser tout fournisseur de données configuré pour votre contrôle. Pour plus d'informations, consultez Sécurisation des contrôles de connexion, Méthodes de sécurité de base pour les applications Web et Sécurisation de l'appartenance (membership).

Le contrôle Login utilise un fournisseur d'appartenances pour obtenir des informations d'identification utilisateur. Sauf indication contraire, le contrôle Login utilise le fournisseur d'appartenances par défaut défini dans le fichier Web.config. Pour spécifier un fournisseur différent, attribuez l'un des noms de fournisseurs d'appartenances définis dans le fichier Web.config de votre application à la propriété MembershipProvider. Pour plus d'informations, consultez Fournisseurs d'appartenances.

Si vous souhaitez utiliser un service d'authentification personnalisé, vous pouvez utiliser la méthode OnAuthenticate pour appeler le service.

Styles et modèles

L'apparence du contrôle Login est complètement personnalisable à l'aide des modèles et paramètres de style. Tous les messages texte d'interface utilisateur sont également personnalisables à l'aide des propriétés de la classe Login. Le texte d'interface par défaut est localisé automatiquement en fonction des paramètres régionaux du serveur.

Si le contrôle Login est personnalisé avec les modèles, la propriété AccessKey et la propriété TabIndex sont ignorées. Dans ce cas, définissez directement la propriété AccessKey et la propriété TabIndex de chaque contrôle enfant de modèle.

Les propriétés du contrôle Login représentées par des zones de texte, telles que UserName et Password, sont accessibles pendant toutes les phases du cycle de vie de la page. Le contrôle reprendra toutes modifications apportées par l'utilisateur final au moyen de l'événement TextChanged déclenché par les zones de texte.

Remarque :

Si vous incorporez le contrôle Login dans un objet WizardStep, définissez la propriété ActiveStepIndex de manière explicite dans un gestionnaire d'événements Page_Load si l'utilisateur est authentifié. Le contrôle Wizard n'avance pas automatiquement à l'objet WizardStep suivant de ce scénario.

Le tableau suivant répertorie les propriétés de style du contrôle Login et décrit l'élément d'interface que chacune des propriétés de style affecte. Pour obtenir la liste des propriétés auxquelles chaque style s'applique, consultez la documentation des propriétés de style.

Propriété du style

Élément de l'interface utilisateur affecté

BorderPadding

Espace entre le contenu du contrôle et la bordure du contrôle.

CheckBoxStyle

Case de mémorisation du mot de passe.

FailureTextStyle

Texte d'échec de connexion.

InstructionTextStyle

Texte d'instruction sur la page qui décrit comment utiliser le contrôle.

LabelStyle

Étiquettes correspondant à tous les champs d'entrée, tels que les zones de texte.

TextBoxStyle

Champs d'entrée pour la saisie de texte.

TitleTextStyle

Texte de titre.

ValidatorTextStyle

Texte affiché à l'attention de l'utilisateur lorsqu'une tentative de connexion échoue en raison d'erreurs de validation.

HyperLinkStyle

Liens vers d'autres pages.

LoginButtonStyle

Bouton de connexion.

Regroupements de validation

Les propriétés UserName et Password ont des contrôles RequiredFieldValidator associés pour empêcher les utilisateurs d'envoyer la page sans fournir les informations requises.

Le contrôle Login utilise un groupe de validation afin que d'autres champs situés sur la même page que le contrôle Login puissent être validés séparément. Par défaut, la propriété ID du contrôle Login est utilisée comme nom du groupe de validation. Par exemple, un contrôle Login dont l'ID est "Login1" utilise également "Login1" comme nom de groupe de validation. Si vous souhaitez définir le groupe de validation dont le contrôle Login fait partie, vous devez créer un modèle avec le contrôle et modifier le nom du groupe de validation.

Accessibilité

Le balisage rendu par défaut pour ce contrôle peut ne pas se conformer aux normes d'accessibilité telles que les instructions WCAG (Web Content Accessibility Guidelines) 1.0 de priorité 1. Pour plus d'informations sur la prise en charge d'accessibilité pour ce contrôle, consultez Contrôles et accessibilité ASP.NET.

TopicLocation
Procédure pas à pas : création d'un site Web avec appartenance et connexion utilisateur (Visual Studio)Génération d'applications Web ASP.NET dans Visual Studio
Procédure pas à pas : création d'un site Web avec appartenance et connexion utilisateurGénération d'applications à l'aide de Visual Web Developer
Comment : créer et exécuter l'exemple de fournisseur de profilsGénération d'applications Web ASP.NET dans Visual Studio
Comment : utiliser les fonctionnalités avancées du contrôle de connexion ASP.NETGénération d'applications Web ASP.NET dans Visual Studio
Comment : créer une page de connexion ASP.NETGénération d'applications Web ASP.NET dans Visual Studio
Comment : créer et exécuter l'exemple de fournisseur de profilsGénération d'applications Web ASP.NET dans Visual Studio
Comment : utiliser les fonctionnalités avancées du contrôle de connexion ASP.NETGénération d'applications Web ASP.NET dans Visual Studio
Comment : créer une page de connexion ASP.NETGénération d'applications Web ASP.NET
Comment : créer et exécuter l'exemple de fournisseur de profilsGénération d'applications Web ASP.NET
Comment : utiliser les fonctionnalités avancées du contrôle de connexion ASP.NETGénération d'applications Web ASP.NET
Comment : créer une page de connexion ASP.NETGénération d'applications Web ASP.NET dans Visual Studio

L'exemple de code suivant utilise un contrôle Login pour fournir une interface utilisateur pour se connecter à un site Web.

<%@ Page Language="C#" %>
<%@ Import Namespace="System.ComponentModel" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
bool IsValidEmail(string strIn)
{
    // Return true if strIn is in valid e-mail format.
    return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); 
}

void OnLoggingIn(object sender, System.Web.UI.WebControls.LoginCancelEventArgs e)
{
    if (!IsValidEmail(Login1.UserName))
    {
        Login1.InstructionText = "Enter a valid e-mail address.";
        Login1.InstructionTextStyle.ForeColor = System.Drawing.Color.RosyBrown;
        e.Cancel = true;
    }
    else
    {
        Login1.InstructionText = String.Empty;
    }
}

void OnLoginError(object sender, EventArgs e)
{
    Login1.HelpPageText = "Help with logging in...";
    Login1.PasswordRecoveryText = "Forgot your password?";
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">
            <asp:Login id="Login1" runat="server" 
                BorderStyle="Solid" 
                BackColor="#F7F7DE" 
                BorderWidth="1px"
                BorderColor="#CCCC99" 
                Font-Size="10pt" 
                Font-Names="Verdana" 
                CreateUserText="Create a new user..."
                CreateUserUrl="newUser.aspx" 
                HelpPageUrl="help.aspx"
                PasswordRecoveryUrl="getPass.aspx" 
                UserNameLabelText="E-mail address:" 
                OnLoggingIn="OnLoggingIn"
                OnLoginError="OnLoginError" >
                <TitleTextStyle Font-Bold="True" 
                    ForeColor="#FFFFFF" 
                    BackColor="#6B696B">
                </TitleTextStyle>
            </asp:Login>

        </form>
    </body>
</html>


L'exemple de code suivant illustre comment étendre le contrôle Login. Le contrôle CustomLogin inclut un contrôle DropDownList qui permet aux utilisateurs de choisir avec quel fournisseur d'appartenances ils sont authentifiés. (Ces fournisseurs sont configurés dans Web.config.) Dans la méthode OnLoggingIn, la propriété MembershipProvider a la valeur sélectionnée du contrôle DropDownList.

Note de sécurité :

Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages Web ASP.NET vérifient que l'entrée d'utilisateur n'inclut pas de script ni d'éléments HTML. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.Controls
{
    public sealed class CustomLogin : Login
    {
        public CustomLogin() { }

        protected override void OnLoggingIn(LoginCancelEventArgs e)
        {
            // Set the Membership provider for the Login control from a DropDownList.
            DropDownList list = (DropDownList)this.FindControl("domain");
            this.MembershipProvider = list.SelectedValue;
            base.OnLoggingIn(e);
        }

        protected override void CreateChildControls()
        {
            LayoutTemplate = new MyTemplate();
            base.CreateChildControls();
        }
    }

    // A Template that contains the child controls.
    public class MyTemplate : ITemplate
    {
        void ITemplate.InstantiateIn(Control container)
        {
            // A TextBox for the user name.
            TextBox username = new TextBox();
            username.ID = "username";

            // A TextBox for the password.
            TextBox password = new TextBox();
            password.ID = "password";

            // A CheckBox to remember the user on subsequent visits.
            CheckBox remember = new CheckBox();
            remember.ID = "RememberMe";
            remember.Text = "Don't forget me!";

            // Failure Text.
            Literal failure = new Literal();
            failure.ID = "FailureText";

            // A DropDownList to choose the Membership provider.
            DropDownList domain = new DropDownList();
            domain.ID = "Domain";
            domain.Items.Add(new ListItem("SqlMembers"));
            domain.Items.Add(new ListItem("SqlMembers2"));

            // A Button to log in.
            Button submit = new Button();
            submit.CommandName = "login";
            submit.Text = "LOGIN";

            container.Controls.Add(new LiteralControl("UserName:"));
            container.Controls.Add(username);
            container.Controls.Add(new LiteralControl("<br>Password:"));
            container.Controls.Add(password);
            container.Controls.Add(new LiteralControl("<br>"));
            container.Controls.Add(remember);
            container.Controls.Add(new LiteralControl("<br>Domain:"));
            container.Controls.Add(domain);
            container.Controls.Add(new LiteralControl("<br>"));
            container.Controls.Add(failure);
            container.Controls.Add(new LiteralControl("<br>"));
            container.Controls.Add(submit);
        }
    }    
}


Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0
Afficher: