Идентификация ASP.NET с базой данных MySQL. Как добавить пользователя-администратора при запуске?C#

Место общения программистов C#
Ответить
Anonymous
 Идентификация ASP.NET с базой данных MySQL. Как добавить пользователя-администратора при запуске?

Сообщение Anonymous »

Я закончил работу над этим руководством/примером использования базы данных MySQL с идентификатором ASP.NET:
http://www.asp.net/identity/overview/ge ... l-provider
Теперь я хотел бы добавить функциональность, которая создает пользователя-администратора при запуске с ролью администратора. Раньше я использовал SimpleMembership и локальную «Базу данных SQL Server», и это было довольно просто, теперь я пытаюсь сделать это, добавив пользователя в «MySqlInitializer». Вот код, который я пытаюсь заставить работать:
MySqlInitializer

Код: Выделить всё

namespace IdentityMySQLDemo
{
public class MySqlInitializer : IDatabaseInitializer
{
public void InitializeDatabase(ApplicationDbContext context)
{
if (!context.Database.Exists())
{
// if database did not exist before - create it
context.Database.Create();
}
else
{
// query to check if MigrationHistory table is present in the database
var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery(
string.Format(
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'",
"17817412_kontadb"));

// if MigrationHistory table is not there (which is the case first time we run) - create it
if (migrationHistoryTableExists.FirstOrDefault() == 0)
{
context.Database.Delete();
context.Database.Create();
}
}
Seed(context);
}

protected void Seed(ApplicationDbContext context)
{
var userManager = new UserManager(new UserStore(new ApplicationDbContext()));
var roleManager = new RoleManager(new RoleStore(new ApplicationDbContext()));
const string name = "admin@example.com";
const string password = "Password";
const string roleName = "Admin";

//Create Role Admin if it does not exist
var role = roleManager.FindByName(roleName);
if (role == null)
{
role = new IdentityRole(roleName);
var roleresult = roleManager.Create(role);
}

var user = userManager.FindByName(name);
if (user == null)
{
user = new ApplicationUser { UserName = name, Email = name };
var result = userManager.Create(user, password);
result = userManager.SetLockoutEnabled(user.Id, false);
}

// Add user admin to Role Admin if not already added
var rolesForUser = userManager.GetRoles(user.Id);
if (!rolesForUser.Contains(role.Name))
{
var result = userManager.AddToRole(user.Id, role.Name);
}
}
}
}
Модели удостоверений

Код: Выделить всё

using System.Data.Entity;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;

namespace IdentityMySQLDemo.Models
{
// You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more.
public class ApplicationUser : IdentityUser
{
public async Task GenerateUserIdentityAsync(UserManager manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}

public class ApplicationDbContext : IdentityDbContext
{
static ApplicationDbContext()
{
Database.SetInitializer(new MySqlInitializer());
}

public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}

public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
}
Я не знаю, почему он не хочет создавать пользователя-администратора при запуске приложения. Я пытался переместить этот код в «Конфигурацию» или «MySQLConfiguration» в папке «Миграции». Я также пытался сначала создать всю таблицу, а затем добавить с ней пользователя-администратора, но это все равно не сработало. Скажите, пожалуйста, где моя глупая ошибка в этом коде?>

Подробнее здесь: https://stackoverflow.com/questions/320 ... r-on-start
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»