加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在控制台.NET核心应用程序中创建用户

发布时间:2020-12-16 03:59:55 所属栏目:asp.Net 来源:网络整理
导读:我有一个包含3个项目的ASP.NET Core 1.0解决方案(Web,控制台应用程序,DataAccessLayer). 我使用ASP.NET核心身份和实体框架核心(SQL Server – 代码优先). 在我的控制台应用程序(用于后台任务)中,我想创建用户,但是如何在控制台应用程序(或在.NET核心类库)中
我有一个包含3个项目的ASP.NET Core 1.0解决方案(Web,控制台应用程序,DataAccessLayer).
我使用ASP.NET核心身份和实体框架核心(SQL Server – 代码优先).

在我的控制台应用程序(用于后台任务)中,我想创建用户,但是如何在控制台应用程序(或在.NET核心类库)中访问UserManager对象?

在控制器类中,使用依赖注入很容易:

public class AccountController : Controller  {
private readonly UserManager<ApplicationUser> _userManager;

public AccountController(UserManager<ApplicationUser> userManager,SignInManager<ApplicationUser> signInManager)
{
    _userManager = userManager;
}

//...

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(RegisterViewModel model)
{
    var user = new ApplicationUser { UserName = model.Email,Email = model.Email };
    var result = await _userManager.CreateAsync(user,model.Password);

    //...
}

我如何在控制台核心应用程序中执行等效操作?

解决方法

感谢Tseng的回答,我最终得到了这段代码.以防万一有人需要:

public class Program
    {
        private interface IUserCreationService
        {
            Task CreateUser();
        }

        public static void Main(string[] args)
        {
            var services = new ServiceCollection();

            services.AddDbContext<ApplicationDbContext>(
            options =>
            {
                options.UseSqlServer("Server=(localdb)mssqllocaldb;Database=my-app-db;Trusted_Connection=True;MultipleActiveResultSets=true");
            });

            // Authentification
            services.AddIdentity<ApplicationUser,IdentityRole>(opt =>
            {
                // Configure identity options
                opt.Password.RequireDigit = false;
                opt.Password.RequireLowercase = false;
                opt.Password.RequireUppercase = false;
                opt.Password.RequireNonAlphanumeric = false;
                opt.Password.RequiredLength = 6;
                opt.User.RequireUniqueEmail = true;
            })
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

            services.AddScoped<IUserCreationService,UserCreationService>();

            // Build the IoC from the service collection
            var provider = services.BuildServiceProvider();

            var userService = provider.GetService<IUserCreationService>();

            userService.CreateUser().GetAwaiter().GetResult();

            Console.ReadKey();
        }

        private class UserCreationService : IUserCreationService
        {
            private readonly UserManager<ApplicationUser> userManager;

            public UserCreationService(UserManager<ApplicationUser> userManager)
            {
                this.userManager = userManager;
            }

            public async Task CreateUser()
            {
                var user = new ApplicationUser { UserName = "TestUser",Email = "test@example.com" };
                var result = await this.userManager.CreateAsync(user,"123456");

                if (result.Succeeded == false)
                {
                    foreach (var error in result.Errors)
                    {
                        Console.WriteLine(error.Description);
                    }
                }
                else
                {
                    Console.WriteLine("Done.");
                }
            }
        }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读