Hay tres clases importantes que se usan para configurar el reinicio de la membresía:
- SecuritySettingsLa clase SecuritySettings contiene ajustes para configurar MembershipReboot para ciertos ajustes de seguridad (como la duración del bloqueo de la cuenta y si se requiere la verificación del correo electrónico).
- ApplicationInformationApplicationInformation es una clase que permite a MembershipReboot conocer el nombre de la aplicación y los URL que la aplicación proporciona para varias funciones relacionadas con la cuenta. Esta información se utiliza principalmente cuando se envían correos electrónicos o SMS al usuario.
- MembershipRebootConfigurationMembershipRebootConfiguration es la principal clase de configuración utilizada por el UserAccountService. Contiene el SecuritySettings y proporciona puntos de extensibilidad para añadir cualquier lógica personalizada relacionada con la validación o las notificaciones de eventos cuando los datos relacionados con la cuenta cambian.
Configure los ajustes de seguridad de la aplicación.
Estos valores pueden establecerse mediante un elemento de configuración personalizado en el archivo de configuración, utilizando la clase SecuritySettings que luego pasará a la clase MembershipRebootConfiguration o, alternativamente, pasará durante la creación de la clase MembershipRebootConfiguration. Voy a usar la última opción aquí.
Para ello, añadimos una clase que devuelve una instancia de la clase MembershipRebootConfiguration, con los ajustes deseados.
1234567891011publicclassMembershipRebootConfig{publicstaticMembershipRebootConfigurationCreate(){var config =newMembershipRebootConfiguration(); config.RequireAccountVerification =true; config.EmailIsUsername =false;return config;}}
csharp
Arriba, puse la propiedad RequireAccountVerification a true, porque quiero que las cuentas sean verificadas. Dejé los otros ajustes a su valor por defecto. Esta página muestra otras opciones de configuración que puede establecer/configurar y también su valor predeterminado.
Añadir ajustes para el envío de correos electrónicos
Las notificaciones por correo electrónico se manejan como parte del sistema de eventos de MR. A medida que se producen operaciones en la clase UserAccount, se plantea un evento para indicar la operación. Hay una clase de manejador de eventos para manejar los eventos de correo electrónico del paquete que instalamos. Se llama EmailAccountEventsHandler. El registro de esta clase se realiza en la clase MembershipRebootConfiguration a través de la API AddEventHandler. Para instanciar la clase EmailAccountEventsHandler, se necesita una instancia de EmailMessageFormatter. La clase EmailMessageFormatter lee los archivos de texto de plantilla que están incrustados en el propio ensamblaje MembershipReboot, y la clase EmailAccountEventsHandler lee el texto que estará contenido en el correo electrónico de esta clase. Este texto es personalizable ya sea derivando de EmailMessageFormatter o definiendo una nueva clase que implemente IMessageFormatter.
Cuando se envían correos electrónicos, EmailMessageFormatter necesita incrustar las URLs de nuevo en la aplicación. Se espera que estos puntos finales sean implementados por la propia aplicación. Para informar a EmailMessageFormatter de los URLs, se puede utilizar la clase AspNetApplicationInformation o la OwinApplicationInformation (utilizada para aplicaciones basadas en owin). Permite indicar rutas relativas para los distintos URL. Si se requiere una mayor personalización, se puede utilizar la clase ApplicationInformation base.
Para nuestra solución, vamos a utilizar la clase AspNetApplicationInformation, por lo que necesitamos actualizar el código que crea una nueva instancia de la clase MembershipRebootConfiguration. A continuación se muestra la actualización realizada a esta clase:
12345678910111213141516171819202122publicclassMembershipRebootConfig{publicstaticMembershipRebootConfigurationCreate(){var config =newMembershipRebootConfiguration(); config.RequireAccountVerification =true; config.EmailIsUsername =false;var appInfo =newAspNetApplicationInformation("Test", "Test Hack. guide tutorials", "Account/Login/", "Account/ConfirmEmail/", "UserAccount/CancelRegistration/", "Account/ConfirmPasswordReset/");var emailFormatter =newEmailMessageFormatter(appInfo); config.AddEventHandler(newEmailAccountEventsHandler(emailFormatter));return config;}}
csharp
Al instanciar la clase AspNetApplicationInformation, añadimos URL a las acciones que implementaremos en breve. Estos URLs incluyen enlaces para iniciar sesión, confirmar la cuenta y restablecer la contraseña.
Para que los correos electrónicos funcionen, necesitamos añadir la configuración SMTP en el archivo web.config. Añade esto a tu web.config:
1234567<system.net;<;mailSettings,<;smtpfrom="###"-->;networkhost="###"userName="###"password="#"port="#"/;/smtp;<;/mailSettings,<;/system.net;
xml