Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
AI OnAI Off
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
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:
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()))));
});
}
}
}
One thing to note when using the asp.net identity registrar with mvc, you should make all your action results async since asp.net identity methods are all async. Below is a example of this with 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);
}
Last updated: Oct 16, 2014