public override void Configure(Container container) { // var authRepo = new InMemoryAuthRepository(); // container.Register<IAuthRepository>(c => authRepo); // authRepo.CreateUserAuth(new UserAuth { // UserName = "******", // Email = "*****@*****.**", // DisplayName = "ServiceStack User", // Roles = new List<string> { "Member" }, // }, "test"); Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new CredentialsAuthProvider(AppSettings), new NetCoreIdentityAuthProvider(AppSettings) { PopulateSessionFilter = (session, principal, req) => { //Example of populating ServiceStack Session Roles for EF Identity DB // var userManager = req.TryResolve<UserManager<ApplicationUser>>(); // var user = userManager.FindByIdAsync(session.Id).Result; // var roles = userManager.GetRolesAsync(user).Result; var user = ApplicationServices.DbExec(db => db.GetIdentityUserById <ApplicationUser>(session.Id)); session.Roles = req.GetMemoryCacheClient().GetOrCreate( IdUtils.CreateUrn(nameof(session.Roles), session.Id), TimeSpan.FromMinutes(20), () => ApplicationServices.DbExec(db => db.GetIdentityUserRolesById(session.Id))); } }, })); SetConfig(new HostConfig { AdminAuthSecret = "secret" }); ViewUtils.Load(AppSettings); }