Disclaimer: This website requires Please enable JavaScript in your browser settings for the best experience.

HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide
GitHubNuGetDev CommunityOptimizely AcademySubmit a ticket

Optimizely developer documentation

How can we help you?

Try our conversational search powered by Generative AI!

AI OnAI Off

ASP.NET Identity Registrar

Describes how to use the ASP.NET Identity Registrar in Optimizely Commerce Connect 13.

📘

Note

This configuration requires the *EPiServer.Commerce.Security* NuGet package as dependency.

See also: ASP.NET Identity.

using EPiServer.Commerce.Security; using EPiServer.Framework; using EPiServer.Framework.Initialization; using EPiServer.ServiceLocation; using EPiServer.Web; using log4net; using Microsoft.AspNet.Identity; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web.Routing; using System.Web.Security; namespace WebApplication1 { [InitializableModule] [ModuleDependency(typeof(Mediachase.Commerce.Initialization.CommerceInitialization), typeof(EPiServer.Commerce.Initialization.InitializationModule))] public class InitializeCommerceSiteModule : IConfigurableModule { public void Initialize(InitializationEngine context) { } public void Preload(string[] parameters) { } public void Uninitialize(InitializationEngine context) { } public void ConfigureContainer(ServiceConfigurationContext context) { context.Container.Configure(ce => { ce.For<IRegistrar>().Singleton().Use(() => new IdentityRegistrar<ApplicationUser>(new ApplicationUserManager(new UserStore<ApplicationUser>(new ApplicationDbContext())))); }); } } }

When using the ASP.NET Identity registrar with MVC, you need to make all action results async since all ASP.NET Identity methods are async. The following example shows this when creating a new user.

[HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task Register(FormCollection model) { if (ModelState.IsValid) { string firstName = model["Email"]; string lastName = model["Email"]; string emailAddress = model["Email"]; string password = model["Password"]; var principal = await Task.Run(() => _registrar.CreateUser(emailAddress, password, emailAddress)); // Now create an account in the ECF CustomerContact customerContact; if (_registrar is CustomerContactRegistrar) { customerContact = CustomerContext.Current.GetContactByUserId( new MapUserKey(s => new ConvertStringUserKey()).ToTypedString(principal.Identity.Name)); } else { customerContact = CustomerContact.CreateInstance(principal); } customerContact.FirstName = firstName; customerContact.LastName = lastName; customerContact.RegistrationSource = String.Format("{0}, {1}", this.Request.Url.Host, SiteContext.Current); customerContact["Email"] = emailAddress; customerContact.SaveChanges(); await Task.Run(() =>_registrar.SignIn ( new AuthenticationProperties() { IsPersistent = false }, principal.Identity as ClaimsIdentity ); return RedirectToAction("Index"); } // If we got this far, something failed, redisplay form return View(model); }

Did this page help you?