Créer une application Web Forms ASP.NET sécurisée avec inscription de l’utilisateur, confirmation par e-mail et réinitialisation du mot de passe (C#)
par Erik Reitan
Ce tutoriel vous montre comment créer une application ASP.NET Web Forms avec l’inscription de l’utilisateur, la confirmation par e-mail et la réinitialisation du mot de passe à l’aide du système d’appartenance ASP.NET Identity. Ce tutoriel était basé sur le tutoriel MVC de Rick Anderson.
Introduction
Ce tutoriel vous guide tout au long des étapes nécessaires pour créer une application ASP.NET Web Forms à l’aide de Visual Studio et ASP.NET 4.5 pour créer une application Web Forms sécurisée avec inscription de l’utilisateur, confirmation par e-mail et réinitialisation de mot de passe.
Tâches et informations du didacticiel :
- Créer une application ASP.NET Web Forms
- Raccorder SendGrid
- Exiger Email confirmation avant la connexion
- Récupération et réinitialisation de mot de passe
- Renvoyer Email lien de confirmation
- Résolution des problèmes liés à l’application
- Ressources supplémentaires
Créer une application ASP.NET Web Forms
Notes
Avertissement : Vous devez installer Visual Studio 2013 Update 3 ou version ultérieure pour suivre ce didacticiel.
Créez un projet (Fichier ->Nouveau projet) et sélectionnez le modèle d’application web ASP.NET et la dernière version du .NET Framework dans la boîte de dialogue Nouveau projet .
Dans la boîte de dialogue Nouveau projet ASP.NET, sélectionnez le modèle Web Forms. Conservez l’authentification par défaut en tant que Comptes d’utilisateur individuels. Si vous souhaitez héberger l’application dans Azure, laissez la case Hôte dans le cloud case activée cochée.
Cliquez ensuite sur OK pour créer le projet.
Activez SSL (Secure Sockets Layer) pour le projet. Suivez les étapes disponibles dans la section Activer SSL pour le projet de la série de tutoriels Prise en main avec Web Forms.
Exécutez l’application, cliquez sur le lien Inscrire et inscrivez un nouvel utilisateur. À ce stade, la seule validation sur l’e-mail est basée sur l’attribut [EmailAddress] pour garantir que l’adresse e-mail est bien formée. Vous allez modifier le code pour ajouter une confirmation par e-mail. Fermez la fenêtre du navigateur.
Dans Server Explorer de Visual Studio (View ->Server Explorer), accédez à Data Connections\DefaultConnection\Tables\AspNetUsers, cliquez avec le bouton droit et sélectionnez Ouvrir la définition de table.
L’image suivante montre le schéma de
AspNetUsers
table :Dans Server Explorer, cliquez avec le bouton droit sur la table AspNetUsers et sélectionnez Afficher les données de table.
À ce stade, l’e-mail de l’utilisateur inscrit n’a pas été confirmé.Cliquez sur la ligne et sélectionnez Supprimer pour supprimer l’utilisateur. Vous allez ajouter à nouveau cet e-mail à l’étape suivante et envoyer un message de confirmation à l’adresse e-mail.
confirmation Email
Il est recommandé de confirmer l’e-mail lors de l’inscription d’un nouvel utilisateur pour vérifier qu’il n’emprunte pas l’identité d’une autre personne (c’est-à-dire qu’il ne s’est pas inscrit auprès de l’e-mail d’une autre personne). Supposons que vous disposiez d’un forum de discussion, vous souhaitez empêcher "bob@cpandl.com"
l’inscription en tant que "joe@contoso.com"
. Sans confirmation par e-mail, "joe@contoso.com"
peut recevoir des e-mails indésirables à partir de votre application. Supposons que Bob s’est accidentellement inscrit en tant que "bib@cpandl.com"
et ne l’avait pas remarqué, il ne serait pas en mesure d’utiliser la récupération de mot de passe, car l’application n’a pas son e-mail correct. Email confirmation fournit uniquement une protection limitée contre les bots et ne fournit pas de protection contre les spammeurs déterminés.
Vous souhaitez généralement empêcher les nouveaux utilisateurs de publier des données sur votre site web avant qu’elles n’aient été confirmées par e-mail, sms ou autre mécanisme. Dans les sections ci-dessous, nous allons activer la confirmation par e-mail et modifier le code pour empêcher les utilisateurs nouvellement inscrits de se connecter jusqu’à ce que leur e-mail ait été confirmé. Vous allez utiliser le service de messagerie SendGrid dans ce tutoriel.
Brancher SendGrid
SendGrid a modifié son API depuis que ce tutoriel a été écrit. Pour obtenir des instructions SendGrid actuelles, consultez SendGrid ou Activer la confirmation de compte et la récupération de mot de passe.
Bien que ce tutoriel montre uniquement comment ajouter une notification par e-mail via SendGrid, vous pouvez envoyer des e-mails à l’aide de SMTP et d’autres mécanismes (voir ressources supplémentaires).
Dans Visual Studio, ouvrez la console du Gestionnaire de package (Outils ->Gestionnaire de package NuGet ->Console du Gestionnaire de package), puis entrez la commande suivante :
Install-Package SendGrid
Accédez à la page d’inscription à Azure SendGrid et inscrivez-vous à un compte SendGrid gratuit. Vous pouvez également vous inscrire à un compte SendGrid gratuit directement sur le site de SendGrid.
À partir de Explorateur de solutions ouvrez le fichier IdentityConfig.cs dans le dossier App_Start et ajoutez le code suivant mis en évidence en jaune à la
EmailService
classe pour configurer SendGrid :public class EmailService : IIdentityMessageService { public async Task SendAsync(IdentityMessage message) { await configSendGridasync(message); } // Use NuGet to install SendGrid (Basic C# client lib) private async Task configSendGridasync(IdentityMessage message) { var myMessage = new SendGridMessage(); myMessage.AddTo(message.Destination); myMessage.From = new System.Net.Mail.MailAddress( "Royce@contoso.com", "Royce Sellars (Contoso Admin)"); myMessage.Subject = message.Subject; myMessage.Text = message.Body; myMessage.Html = message.Body; var credentials = new NetworkCredential( ConfigurationManager.AppSettings["emailServiceUserName"], ConfigurationManager.AppSettings["emailServicePassword"] ); // Create a Web transport for sending email. var transportWeb = new Web(credentials); // Send the email. if (transportWeb != null) { await transportWeb.DeliverAsync(myMessage); } else { Trace.TraceError("Failed to create Web transport."); await Task.FromResult(0); } } }
Ajoutez également les instructions suivantes
using
au début du fichier IdentityConfig.cs :using SendGrid; using System.Net; using System.Configuration; using System.Diagnostics;
Pour simplifier cet exemple, vous allez stocker les valeurs du compte de service de messagerie dans la
appSettings
section du fichier web.config . Ajoutez le code XML suivant mis en surbrillance en jaune au fichier web.config à la racine de votre projet :</connectionStrings> <appSettings> <add key="emailServiceUserName" value="[EmailServiceAccountUserName]" /> <add key="emailServicePassword" value="[EmailServiceAccountPassword]" /> </appSettings> <system.web>
Avertissement
Sécurité : ne stockez jamais de données sensibles dans votre code source. Dans cet exemple, le compte et les informations d’identification sont stockés dans la section appSetting du fichier Web.config . Sur Azure, vous pouvez stocker ces valeurs en toute sécurité sous l’onglet Configurer dans le Portail Azure. Pour plus d’informations, consultez la rubrique de Rick Anderson intitulée Meilleures pratiques pour le déploiement de mots de passe et d’autres données sensibles sur ASP.NET et Azure.
Ajoutez les valeurs du service de messagerie pour refléter vos valeurs d’authentification SendGrid (nom d’utilisateur et mot de passe) afin que vous puissiez envoyer des e-mails à partir de votre application. Veillez à utiliser le nom de votre compte SendGrid plutôt que l’adresse e-mail que vous avez fournie à SendGrid.
Activer Email confirmation
Pour activer la confirmation par e-mail, vous allez modifier le code d’inscription en procédant comme suit.
Dans le dossier Account , ouvrez le code-behind Register.aspx.cs et mettez à jour la
CreateUser_Click
méthode pour activer les modifications suivantes mises en évidence :protected void CreateUser_Click(object sender, EventArgs e) { var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text }; IdentityResult result = manager.Create(user, Password.Text); if (result.Succeeded) { // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 string code = manager.GenerateEmailConfirmationToken(user.Id); string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>."); IdentityHelper.SignIn(manager, user, isPersistent: false); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); } else { ErrorMessage.Text = result.Errors.FirstOrDefault(); } }
Dans Explorateur de solutions, cliquez avec le bouton droit sur Default.aspx et sélectionnez Définir comme page de démarrage.
Exécutez l’application en appuyant sur F5. Une fois la page affichée, cliquez sur le lien Inscrire pour afficher la page Inscrire.
Entrez votre adresse e-mail et votre mot de passe, puis cliquez sur le bouton Inscrire pour envoyer un e-mail via SendGrid.
L’état actuel de votre projet et de votre code permet à l’utilisateur de se connecter une fois qu’il a terminé le formulaire d’inscription, même s’il n’a pas confirmé son compte.Vérifiez votre compte de messagerie et cliquez sur le lien pour confirmer votre e-mail.
Une fois que vous avez envoyé le formulaire d’inscription, vous êtes connecté.
Exiger Email confirmation avant la connexion
Bien que vous ayez confirmé le compte de messagerie, vous n’avez pas besoin de cliquer sur le lien contenu dans l’e-mail de vérification pour être entièrement connecté. Dans la section suivante, vous allez modifier le code exigeant que les nouveaux utilisateurs aient un e-mail confirmé avant d’être connectés (authentifiés).
Dans Explorateur de solutions de Visual Studio, mettez à jour l’événement
CreateUser_Click
dans le code-behind Register.aspx.cs contenu dans le dossier Comptes avec les modifications suivantes mises en évidence :protected void CreateUser_Click(object sender, EventArgs e) { var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text }; IdentityResult result = manager.Create(user, Password.Text); if (result.Succeeded) { // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 string code = manager.GenerateEmailConfirmationToken(user.Id); string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>."); if (user.EmailConfirmed) { IdentityHelper.SignIn(manager, user, isPersistent: false); IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); } else { ErrorMessage.Text = "An email has been sent to your account. Please view the email and confirm your account to complete the registration process."; } } else { ErrorMessage.Text = result.Errors.FirstOrDefault(); } }
Mettez à jour la
LogIn
méthode dans le code-behind Login.aspx.cs avec les modifications suivantes mises en évidence :protected void LogIn(object sender, EventArgs e) { if (IsValid) { // Validate the user password var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>(); // Require the user to have a confirmed email before they can log on. var user = manager.FindByName(Email.Text); if (user != null) { if (!user.EmailConfirmed) { FailureText.Text = "Invalid login attempt. You must have a confirmed email account."; ErrorMessage.Visible = true; } else { // This doen't count login failures towards account lockout // To enable password failures to trigger lockout, change to shouldLockout: true var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false); switch (result) { case SignInStatus.Success: IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); break; case SignInStatus.LockedOut: Response.Redirect("/Account/Lockout"); break; case SignInStatus.RequiresVerification: Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}", Request.QueryString["ReturnUrl"], RememberMe.Checked), true); break; case SignInStatus.Failure: default: FailureText.Text = "Invalid login attempt"; ErrorMessage.Visible = true; break; } } } } }
Exécution de l’application
Maintenant que vous avez implémenté le code pour case activée si l’adresse e-mail d’un utilisateur a été confirmée, vous pouvez case activée la fonctionnalité sur les pages Inscription et Connexion.
- Supprimez tous les comptes de la table AspNetUsers qui contiennent l’alias de messagerie que vous souhaitez tester.
- Exécutez l’application (F5) et vérifiez que vous ne pouvez pas vous inscrire en tant qu’utilisateur tant que vous n’avez pas confirmé votre adresse e-mail.
- Avant de confirmer votre nouveau compte via l’e-mail qui vient d’être envoyé, essayez de vous connecter avec le nouveau compte.
Vous verrez que vous ne parvenez pas à vous connecter et que vous devez avoir un compte de messagerie confirmé. - Une fois que vous avez confirmé votre adresse e-mail, connectez-vous à l’application.
Récupération et réinitialisation de mot de passe
Dans Visual Studio, supprimez les caractères de commentaire de la
Forgot
méthode dans le code-behind Forgot.aspx.cs contenu dans le dossier Account , afin que la méthode s’affiche comme suit :protected void Forgot(object sender, EventArgs e) { if (IsValid) { // Validate the user's email address var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); ApplicationUser user = manager.FindByName(Email.Text); if (user == null || !manager.IsEmailConfirmed(user.Id)) { FailureText.Text = "The user either does not exist or is not confirmed."; ErrorMessage.Visible = true; return; } // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send email with the code and the redirect to reset password page string code = manager.GeneratePasswordResetToken(user.Id); string callbackUrl = IdentityHelper.GetResetPasswordRedirectUrl(code, Request); manager.SendEmail(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>."); loginForm.Visible = false; DisplayEmail.Visible = true; } }
Ouvrez la page Login.aspx . Remplacez le balisage près de la fin de la section loginForm , comme indiqué ci-dessous :
<%@ Page Title="Log in" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebForms002.Account.Login" Async="true" %> <%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent"> <h2><%: Title %>.</h2> <div class="row"> <div class="col-md-8"> <section id="loginForm"> <div class="form-horizontal"> <h4>Use a local account to log in.</h4> <hr /> <asp:PlaceHolder runat="server" ID="ErrorMessage" Visible="false"> <p class="text-danger"> <asp:Literal runat="server" ID="FailureText" /> </p> </asp:PlaceHolder> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Email" CssClass="col-md-2 control-label">Email</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Email" CssClass="form-control" TextMode="Email" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Email" CssClass="text-danger" ErrorMessage="The email field is required." /> </div> </div> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-2 control-label">Password</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="text-danger" ErrorMessage="The password field is required." /> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <div class="checkbox"> <asp:CheckBox runat="server" ID="RememberMe" /> <asp:Label runat="server" AssociatedControlID="RememberMe">Remember me?</asp:Label> </div> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <asp:Button runat="server" OnClick="LogIn" Text="Log in" CssClass="btn btn-default" /> </div> </div> </div> <p> <asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">Register as a new user</asp:HyperLink> </p> <p> <%-- Enable this once you have account confirmation enabled for password reset functionality --%> <asp:HyperLink runat="server" ID="ForgotPasswordHyperLink" ViewStateMode="Disabled">Forgot your password?</asp:HyperLink> </p> </section> </div> <div class="col-md-4"> <section id="socialLoginForm"> <uc:OpenAuthProviders runat="server" ID="OpenAuthLogin" /> </section> </div> </div> </asp:Content>
Ouvrez le code-behind Login.aspx.cs et supprimez les marques de commentaire de la ligne de code suivante mise en évidence en jaune à partir du
Page_Load
gestionnaire d’événements :protected void Page_Load(object sender, EventArgs e) { RegisterHyperLink.NavigateUrl = "Register"; // Enable this once you have account confirmation enabled for password reset functionality ForgotPasswordHyperLink.NavigateUrl = "Forgot"; OpenAuthLogin.ReturnUrl = Request.QueryString["ReturnUrl"]; var returnUrl = HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]); if (!String.IsNullOrEmpty(returnUrl)) { RegisterHyperLink.NavigateUrl += "?ReturnUrl=" + returnUrl; } }
Exécutez l’application en appuyant sur F5. Une fois la page affichée, cliquez sur le lien Se connecter .
Cliquez sur le lien Mot de passe oublié ? pour afficher la page Mot de passe oublié .
Entrez votre adresse e-mail et cliquez sur le bouton Envoyer pour envoyer un e-mail à votre adresse qui vous permettra de réinitialiser votre mot de passe.
Vérifiez votre compte de messagerie et cliquez sur le lien pour afficher la page Réinitialiser le mot de passe .Dans la page Réinitialiser le mot de passe , entrez votre adresse e-mail, votre mot de passe et votre mot de passe confirmé. Appuyez ensuite sur le bouton Réinitialiser .
Lorsque vous avez correctement réinitialisé votre mot de passe, la page Mot de passe modifié s’affiche. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.
Renvoyer Email lien de confirmation
Une fois qu’un utilisateur a créé un compte local, il est envoyé par e-mail un lien de confirmation qu’il doit utiliser avant de pouvoir se connecter. Si l’utilisateur supprime accidentellement l’e-mail de confirmation ou si l’e-mail n’arrive jamais, le lien de confirmation doit être envoyé à nouveau. Les modifications de code suivantes montrent comment l’activer.
Dans Visual Studio, ouvrez le code-behind Login.aspx.cs et ajoutez le gestionnaire d’événements suivant après le gestionnaire d’événements
LogIn
:protected void SendEmailConfirmationToken(object sender, EventArgs e) { var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var user = manager.FindByName(Email.Text); if (user != null) { if (!user.EmailConfirmed) { string code = manager.GenerateEmailConfirmationToken(user.Id); string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request); manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>."); FailureText.Text = "Confirmation email sent. Please view the email and confirm your account."; ErrorMessage.Visible = true; ResendConfirm.Visible = false; } } }
Modifiez le
LogIn
gestionnaire d’événements dans le code-behind Login.aspx.cs en modifiant le code mis en surbrillance en jaune comme suit :protected void LogIn(object sender, EventArgs e) { if (IsValid) { // Validate the user password var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>(); // Require the user to have a confirmed email before they can log on. var user = manager.FindByName(Email.Text); if (user != null) { if (!user.EmailConfirmed) { FailureText.Text = "Invalid login attempt. You must have a confirmed email address. Enter your email and password, then press 'Resend Confirmation'."; ErrorMessage.Visible = true; ResendConfirm.Visible = true; } else { // This doen't count login failures towards account lockout // To enable password failures to trigger lockout, change to shouldLockout: true var result = signinManager.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false); switch (result) { case SignInStatus.Success: IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response); break; case SignInStatus.LockedOut: Response.Redirect("/Account/Lockout"); break; case SignInStatus.RequiresVerification: Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}", Request.QueryString["ReturnUrl"], RememberMe.Checked), true); break; case SignInStatus.Failure: default: FailureText.Text = "Invalid login attempt"; ErrorMessage.Visible = true; break; } } } } }
Mettez à jour la page Login.aspx en ajoutant le code mis en surbrillance en jaune comme suit :
<%@ Page Title="Log in" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="WebForms002.Account.Login" Async="true" %> <%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %> <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent"> <h2><%: Title %>.</h2> <div class="row"> <div class="col-md-8"> <section id="loginForm"> <div class="form-horizontal"> <h4>Use a local account to log in.</h4> <hr /> <asp:PlaceHolder runat="server" ID="ErrorMessage" Visible="false"> <p class="text-danger"> <asp:Literal runat="server" ID="FailureText" /> </p> </asp:PlaceHolder> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Email" CssClass="col-md-2 control-label">Email</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Email" CssClass="form-control" TextMode="Email" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Email" CssClass="text-danger" ErrorMessage="The email field is required." /> </div> </div> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Password" CssClass="col-md-2 control-label">Password</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Password" TextMode="Password" CssClass="form-control" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="text-danger" ErrorMessage="The password field is required." /> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <div class="checkbox"> <asp:CheckBox runat="server" ID="RememberMe" /> <asp:Label runat="server" AssociatedControlID="RememberMe">Remember me?</asp:Label> </div> </div> </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <asp:Button runat="server" OnClick="LogIn" Text="Log in" CssClass="btn btn-default" /> <asp:Button runat="server" ID="ResendConfirm" OnClick="SendEmailConfirmationToken" Text="Resend confirmation" Visible="false" CssClass="btn btn-default" /> </div> </div> </div> <p> <asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">Register as a new user</asp:HyperLink> </p> <p> <%-- Enable this once you have account confirmation enabled for password reset functionality --%> <asp:HyperLink runat="server" ID="ForgotPasswordHyperLink" ViewStateMode="Disabled">Forgot your password?</asp:HyperLink> </p> </section> </div> <div class="col-md-4"> <section id="socialLoginForm"> <uc:OpenAuthProviders runat="server" ID="OpenAuthLogin" /> </section> </div> </div> </asp:Content>
Supprimez tous les comptes de la table AspNetUsers qui contiennent l’alias de messagerie que vous souhaitez tester.
Exécutez l’application (F5) et inscrivez votre adresse e-mail.
Avant de confirmer votre nouveau compte via l’e-mail qui vient d’être envoyé, essayez de vous connecter avec le nouveau compte.
Vous verrez que vous ne parvenez pas à vous connecter et que vous devez avoir un compte de messagerie confirmé. En outre, vous pouvez maintenant renvoyer un message de confirmation à votre compte de messagerie.Entrez votre adresse e-mail et votre mot de passe, puis appuyez sur le bouton Renvoyer la confirmation .
Une fois que vous avez confirmé votre adresse e-mail en fonction du message électronique que vous venez d’envoyer, connectez-vous à l’application.
Résolution des problèmes liés à l’application
Si vous ne recevez pas d’e-mail contenant le lien pour vérifier vos informations d’identification :
- Vérifiez votre dossier de courrier indésirable ou de courrier indésirable.
- Connectez-vous à votre compte SendGrid et cliquez sur le lien activité Email.
- Assurez-vous que vous avez utilisé le nom de votre compte d’utilisateur SendGrid comme valeur Web.config plutôt que l’adresse e-mail de votre compte SendGrid.
Ressources supplémentaires
- Liens vers les ressources recommandées ASP.NET Identity
- Confirmation de compte et récupération de mot de passe avec ASP.NET Identity
- série de tutoriels ASP.NET Web Forms - Ajouter un fournisseur OAuth 2.0
- Déployer une application ASP.NET Web Forms sécurisée avec appartenance, OAuth et SQL Database sur Azure App Service
- série de tutoriels ASP.NET Web Forms - Activer SSL pour le projet