Switch to identity Sql
This commit is contained in:
parent
4f7a0390c9
commit
be912b15dc
|
|
@ -1,9 +1,12 @@
|
||||||
{
|
{
|
||||||
"DefaultAdminUsername": "Administrator",
|
"DefaultAdminUsername": "Administrator",
|
||||||
"DefaultAdminPassword": "YouShouldChangeThisPassword",
|
"DefaultAdminPassword": "YouShouldChangeThisPassword1!",
|
||||||
"Data": {
|
"Data": {
|
||||||
"DefaultConnection": {
|
"DefaultConnection": {
|
||||||
"Connectionstring": "Server=(localdb)\\v11.0;Database=MusicStore;Trusted_Connection=True;"
|
"Connectionstring": "Server=(localdb)\\v11.0;Database=MusicStore;Trusted_Connection=True;"
|
||||||
|
},
|
||||||
|
"IdentityConnection": {
|
||||||
|
"Connectionstring": "Server=(localdb)\\v11.0;Database=MusicStoreIdentity;Trusted_Connection=True;"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
using System;
|
using System;
|
||||||
using Microsoft.AspNet.Http;
|
using Microsoft.AspNet.Http;
|
||||||
using Microsoft.Framework.DependencyInjection;
|
|
||||||
using Microsoft.AspNet.Identity;
|
using Microsoft.AspNet.Identity;
|
||||||
|
using Microsoft.AspNet.Identity.Entity;
|
||||||
using Microsoft.AspNet.Identity.Security;
|
using Microsoft.AspNet.Identity.Security;
|
||||||
|
using Microsoft.Data.Entity;
|
||||||
|
using Microsoft.Framework.ConfigurationModel;
|
||||||
|
using Microsoft.Framework.DependencyInjection;
|
||||||
|
|
||||||
namespace MusicStore.Models
|
namespace MusicStore.Models
|
||||||
{
|
{
|
||||||
|
|
@ -21,7 +24,21 @@ namespace MusicStore.Models
|
||||||
public ApplicationSignInManager(ApplicationUserManager manager, IContextAccessor<HttpContext> contextAccessor) : base(manager, contextAccessor) { }
|
public ApplicationSignInManager(ApplicationUserManager manager, IContextAccessor<HttpContext> contextAccessor) : base(manager, contextAccessor) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ApplicationUser : IdentityUser
|
public class ApplicationUser : User { }
|
||||||
|
|
||||||
|
public class ApplicationDbContext : IdentitySqlContext<ApplicationUser>
|
||||||
{
|
{
|
||||||
|
private readonly IConfiguration _configuration;
|
||||||
|
|
||||||
|
public ApplicationDbContext(IServiceProvider serviceProvider, IConfiguration configuration)
|
||||||
|
: base(serviceProvider)
|
||||||
|
{
|
||||||
|
_configuration = configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnConfiguring(DbContextOptions builder)
|
||||||
|
{
|
||||||
|
builder.UseSqlServer(_configuration.Get("Data:IdentityConnection:ConnectionString"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -32,6 +32,21 @@ namespace MusicStore.Models
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async Task InitializeIdentityDatabaseAsync(IServiceProvider serviceProvider)
|
||||||
|
{
|
||||||
|
using (var db = serviceProvider.GetService<DbContext>() as ApplicationDbContext)
|
||||||
|
{
|
||||||
|
var sqlServerDataStore = db.Configuration.DataStore as SqlServerDataStore;
|
||||||
|
if (sqlServerDataStore != null)
|
||||||
|
{
|
||||||
|
if (!await db.Database.ExistsAsync())
|
||||||
|
{
|
||||||
|
await db.Database.CreateAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static async Task InsertTestData(IServiceProvider serviceProvider)
|
private static async Task InsertTestData(IServiceProvider serviceProvider)
|
||||||
{
|
{
|
||||||
var albums = GetAlbums(imgUrl, Genres, Artists);
|
var albums = GetAlbums(imgUrl, Genres, Artists);
|
||||||
|
|
|
||||||
|
|
@ -50,11 +50,8 @@ public class Startup
|
||||||
|
|
||||||
/*Add all EF related services to IoC.
|
/*Add all EF related services to IoC.
|
||||||
Using an InMemoryStore in K until SQL server is available.*/
|
Using an InMemoryStore in K until SQL server is available.*/
|
||||||
#if NET45
|
|
||||||
services.AddEntityFramework(s => s.AddSqlServer());
|
services.AddEntityFramework(s => s.AddSqlServer());
|
||||||
#else
|
|
||||||
services.AddEntityFramework(s => s.AddInMemoryStore());
|
services.AddEntityFramework(s => s.AddInMemoryStore());
|
||||||
#endif
|
|
||||||
services.AddTransient<MusicStoreContext>();
|
services.AddTransient<MusicStoreContext>();
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -63,27 +60,18 @@ public class Startup
|
||||||
* Using an InMemory store to store membership data until SQL server is available.
|
* Using an InMemory store to store membership data until SQL server is available.
|
||||||
* Users created will be lost on application shutdown.
|
* Users created will be lost on application shutdown.
|
||||||
*/
|
*/
|
||||||
|
services.AddTransient<DbContext, ApplicationDbContext>();
|
||||||
|
|
||||||
//Bug: https://github.com/aspnet/Identity/issues/50
|
//Bug: https://github.com/aspnet/Identity/issues/50
|
||||||
services.AddIdentity<ApplicationUser, IdentityRole>(s =>
|
services.AddIdentity<ApplicationUser, IdentityRole>(s =>
|
||||||
{
|
{
|
||||||
//s.UseDbContext(() => context);
|
//s.UseDbContext(() => context);
|
||||||
//s.UseUserStore(() => new UserStore(context));
|
//s.UseUserStore(() => new UserStore(context));
|
||||||
s.AddInMemory();
|
s.AddEntity();
|
||||||
s.AddUserManager<ApplicationUserManager>();
|
s.AddUserManager<ApplicationUserManager>();
|
||||||
s.AddRoleManager<ApplicationRoleManager>();
|
s.AddRoleManager<ApplicationRoleManager>();
|
||||||
});
|
});
|
||||||
services.AddTransient<ApplicationSignInManager>();
|
services.AddTransient<ApplicationSignInManager>();
|
||||||
// Turn off password defaults since register error display blows up
|
|
||||||
services.SetupOptions<IdentityOptions>(
|
|
||||||
options =>
|
|
||||||
{
|
|
||||||
options.Password.RequireDigit = false;
|
|
||||||
options.Password.RequireLowercase = false;
|
|
||||||
options.Password.RequireNonLetterOrDigit = false;
|
|
||||||
options.Password.RequireUppercase = false;
|
|
||||||
options.Password.RequiredLength = 0;
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -117,9 +105,10 @@ public class Startup
|
||||||
|
|
||||||
//Populates the MusicStore sample data
|
//Populates the MusicStore sample data
|
||||||
SampleData.InitializeMusicStoreDatabaseAsync(app.ApplicationServices).Wait();
|
SampleData.InitializeMusicStoreDatabaseAsync(app.ApplicationServices).Wait();
|
||||||
|
SampleData.InitializeIdentityDatabaseAsync(app.ApplicationServices).Wait();
|
||||||
|
|
||||||
//Creates a Store manager user who can manage the store.
|
//Creates a Store manager user who can manage the store.
|
||||||
CreateAdminUser(app.ApplicationServices).Wait();
|
//CreateAdminUser(app.ApplicationServices).Wait(); // todo: sql identity doesn't support roles yet
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -132,22 +121,22 @@ public class Startup
|
||||||
var configuration = serviceProvider.GetService<IConfiguration>();
|
var configuration = serviceProvider.GetService<IConfiguration>();
|
||||||
var userName = configuration.Get("DefaultAdminUsername");
|
var userName = configuration.Get("DefaultAdminUsername");
|
||||||
var password = configuration.Get("DefaultAdminPassword");
|
var password = configuration.Get("DefaultAdminPassword");
|
||||||
const string adminRole = "Administrator";
|
//const string adminRole = "Administrator";
|
||||||
|
|
||||||
var userManager = serviceProvider.GetService<ApplicationUserManager>();
|
var userManager = serviceProvider.GetService<ApplicationUserManager>();
|
||||||
var roleManager = serviceProvider.GetService<ApplicationRoleManager>();
|
// Todo: identity sql does not support roles yet
|
||||||
|
//var roleManager = serviceProvider.GetService<ApplicationRoleManager>();
|
||||||
if (!await roleManager.RoleExistsAsync(adminRole))
|
//if (!await roleManager.RoleExistsAsync(adminRole))
|
||||||
{
|
//{
|
||||||
await roleManager.CreateAsync(new IdentityRole(adminRole));
|
// await roleManager.CreateAsync(new IdentityRole(adminRole));
|
||||||
}
|
//}
|
||||||
|
|
||||||
var user = await userManager.FindByNameAsync(userName);
|
var user = await userManager.FindByNameAsync(userName);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
user = new ApplicationUser { UserName = userName };
|
user = new ApplicationUser { UserName = userName };
|
||||||
await userManager.CreateAsync(user, password);
|
await userManager.CreateAsync(user, password);
|
||||||
await userManager.AddToRoleAsync(user, adminRole);
|
//await userManager.AddToRoleAsync(user, adminRole);
|
||||||
await userManager.AddClaimAsync(user, new Claim("ManageStore", "Allowed"));
|
await userManager.AddClaimAsync(user, new Claim("ManageStore", "Allowed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@
|
||||||
"System.Diagnostics.Tools": "4.0.0.0",
|
"System.Diagnostics.Tools": "4.0.0.0",
|
||||||
"Microsoft.DataAnnotations": "0.1-alpha-*",
|
"Microsoft.DataAnnotations": "0.1-alpha-*",
|
||||||
"System.Reflection": "4.0.10.0",
|
"System.Reflection": "4.0.10.0",
|
||||||
|
"System.Reflection.Compatibility": "4.0.0.0",
|
||||||
"System.Reflection.Extensions": "4.0.0.0",
|
"System.Reflection.Extensions": "4.0.0.0",
|
||||||
"System.IO": "4.0.0.0"
|
"System.IO": "4.0.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue