This content is archived. See latest version here

Last updated: Oct 16 2014


This section provides an information on how to use the AspNet Registrar in EPiServer Commerce. Refer to ASP.NET Identity for more information on to setup AspNet  identity. See below for a description of how to configure AspNet Identity Registrar.


This configuration requires the following NuGet packages as dependency:

  • EPiServer.Commerce.Security
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
    [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()))));

One thing to note when using the identity registrar with mvc, you should make all your action results async since identity methods are all async. Below is a example of this with creating a new user.

        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 =
                            new MapUserKey(s => new ConvertStringUserKey()).ToTypedString(principal.Identity.Name));
                    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;

                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);

See also

Do you have feedback on this documentation? Send an email to For development-related questions and discussions, refer to our Forums on