1

如何使用 AspNet.Identity 创建具有 Asp.Net RTM 位的用户?

我转到了@Hao Kung 在此处发布的 AspNet Identity RTM 位:如何提前访问即将到来的 Asp.Net Identity 更改?

用于注册用户的 RC Asp.Net 身份代码如下所示...

protected void CreateUser_Click(object sender, EventArgs e)
{
    string userName = UserName.Text;
    var manager = new AuthenticationIdentityManager(new IdentityStore());
    User u = new User(userName) { UserName = userName };
    IdentityResult result = manager.Users.CreateLocalUser(u, Password.Text);
    if (result.Success) 
    {
        manager.Authentication.SignIn(Context.GetOwinContext().Authentication, u.Id, isPersistent: false);
        OpenAuthProviders.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
    }
    else 
    {
        ErrorMessage.Text = result.Errors.FirstOrDefault();
    }
}

我的问题与此处发现的问题类似... 您如何使用 AspNet.Identity 登录/验证具有 Asp.Net MVC5 RTM 位的用户?

但我问的是创建用户,而不是登录。

4

2 回答 2

1

下面是 Register 方法的样子,它基本上是使用密码创建用户:

    //
    // POST: /Account/Register
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model) {
        if (ModelState.IsValid) {
            var user = new ApplicationUser() { UserName = model.UserName };
            var result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded) {
                await SignInAsync(user, isPersistent: false);
                return RedirectToAction("Index", "Home");
            }
            else {
                AddErrors(result);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }
于 2013-10-03T00:17:39.343 回答
0

不确定这是否是最好的方法,或者在 RTM 正式发布之前这是否会改变,但这似乎可以解决问题......

    protected void CreateUser_Click(object sender, EventArgs e)
    {
        string userName = UserName.Text;
        var manager = HttpContext.Current.GetOwinContext();
        ApplicationUser u = new ApplicationUser() { UserName = userName };
        var userMangager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());

        IdentityResult result = userMangager.Create(u, Password.Text);
        if (result.Succeeded) 
        {
            manager.Authentication.SignIn();
            OpenAuthProviders.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
        }
        else 
        {
            ErrorMessage.Text = result.Errors.FirstOrDefault();
        }
    }
于 2013-10-02T22:17:41.997 回答