SaaS CMS has officially launched! Learn more now.

Applies to versions: 10-13
Other versions:
ARCHIVED This content is retired and no longer maintained. See the version selector for other versions of this topic.

ASP.NET Identity Registrar [Legacy]

Recommended reading 

The following examples show how to use the ASP.NET Identity Registrar in Episerver Commerce. See ASP.NET Identity.

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

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
    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.

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));
            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);
Do you find this information helpful? Please log in to provide feedback.

Last updated: Mar 31, 2021

Recommended reading