-
-
Notifications
You must be signed in to change notification settings - Fork 58
Startup Configuration
//Single method to configure the Identity user manager for use with Umbraco
app.ConfigureUserManagerForUmbracoMembers<UmbracoApplicationMember>();
//Ensure owin is configured for Umbraco back office authentication
app.UseUmbracoBackOfficeCookieAuthentication(ApplicationContext.Current);
Generally you can just use the default that is shipped but if you are extending or customizing/extending the user store/manager then you will need to use the 2nd overload.
There are a 2 overloaded methods for: ConfigureUserManagerForUmbracoMembers
:
This is the default one (used in above example) which just configures the default members user manager and user stores while
allowing you to pass a custom implementation of UmbracoIdentityMember
as the T
type parameter if you need one.
It also lets you pass in a custom membership provider but this would be very rare.
public static void ConfigureUserManagerForUmbracoMembers<T>(this IAppBuilder app,
ApplicationContext appContext = null,
IdentityEnabledMembersMembershipProvider membershipProvider = null)
where T : UmbracoIdentityMember, new()
A custom overload which is used if you want to supply your own custom UmbracoMembersUserStore
This will be required if you are adding additional support to the user store implementation
than what is shipped by default. For example, if you wanted to implement IUserLockoutStore
,
IUserPhoneNumberStore
, IUserTwoFactorStore
, etc... (see not implemented features for more info)
public static void ConfigureUserManagerForUmbracoMembers<T>(this IAppBuilder app,
UmbracoMembersUserStore<T> customUserStore,
ApplicationContext appContext,
IdentityEnabledMembersMembershipProvider membershipProvider = null)
where T : UmbracoIdentityMember, new()
This is a complex method with callbacks because a user manager and therefore a user store are OWIN request scoped instances, meaning a new instance of each is created for each OWIN request. This is a requirement of ASP.NET Identity.
This shows how you can have a custom user store while using the default user manager
app.ConfigureUserManagerForUmbracoMembers<UmbracoMembersUserManager<UmbracoApplicationMember>, UmbracoApplicationMember>(
(options, owinCtx) =>
{
// Get the membership provider
var membershipProvider = Membership.Providers["UmbracoMembershipProvider"] as IdentityEnabledMembersMembershipProvider;
// Create the user store
var userStore = new CustomUmbracoMembersUserStore<UmbracoApplicationMember>(
Current.ProfilingLogger,
Services.MemberService,
Services.MemberTypeService,
Services.MemberGroupService,
membershipProvider,
new ExternalLoginStore(Current.ScopeProvider));
// Create the manager and initialize with default settings
var manager = UmbracoMembersUserManager<UmbracoApplicationMember>.Create(options, userStore, membershipProvider);
return manager;
});
This shows how you can have a custom user store and a custom user manager
app.ConfigureUserManagerForUmbracoMembers<CustomUmbracoMembersUserManager<UmbracoApplicationMember>, UmbracoApplicationMember>(
(options, owinCtx) =>
{
// Get the membership provider
var membershipProvider = Membership.Providers["UmbracoMembershipProvider"] as IdentityEnabledMembersMembershipProvider;
// Create the user store
var userStore = new CustomUmbracoMembersUserStore<UmbracoApplicationMember>(
Current.ProfilingLogger,
Services.MemberService,
Services.MemberTypeService,
Services.MemberGroupService,
membershipProvider,
new ExternalLoginStore(Current.ScopeProvider));
// Create the manager
var manager = new CustomUmbracoMembersUserManager<UmbracoApplicationMember>(userStore);
// initialize it with the default settings
CustomUmbracoMembersUserManager<UmbracoApplicationMember>.Configure(manager, membershipProvider, options);
return manager;
});