4

在 VisualStudio 2013 RC 中,使用 MVC5,在 AccountController.cs 中,我必须修改 Login 方法以调用 WebSecurity.Login,因为我仍在使用 WebSecurity 和 Webmatrix 添加用户和用户角色。我使用 Entity Framework 6 种子方法使用 WebSecurity 和 Webmatrix API 填充用户和角色。在我的代码示例中,WebSecurity.Login 将处理本地用户帐户,而 CheckPasswordAndSignInAsync 将处理 Google 帐户登录。

OWIN 是否应该替代 Webmatrix 和 Websecurity API,如果是的话,微软创建角色和用户的 OWIN API 是什么?在 MSDN 中似乎找不到关于 OWIN 的太多文档。是否有人创建了任何示例代码或知道任何解释如何使用 Microsoft 的 OWIN 风格的文档?您是否必须编写自己的代码来将角色和用户填充到 OWIN 生成的表中,例如 AspNetUsers 和 AspNetUserRoles?

这是登录方法:

公共异步任务登录(LoginViewModel 模型,字符串 returnUrl){

        if (ModelState.IsValid)
        {
            // Validate the password
            IdentityResult result = await IdentityManager.Authentication.CheckPasswordAndSignInAsync(AuthenticationManager, model.UserName, model.Password, model.RememberMe);
            if (result.Success)
            {
                return RedirectToLocal(returnUrl);
            }
            //added this for roles to work
            else if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
            {
                return RedirectToLocal(returnUrl);
            }

            else
            {
                AddErrors(result);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

这是注销方法:

    // POST: /Account/LogOff
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        AuthenticationManager.SignOut();

        WebSecurity.Logout();

        return RedirectToAction("Index", "Home");

    }
4

1 回答 1

0

为了创建用户,您需要编写如下代码:

UserManager<ApplicationUser> userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));

var user = new ApplicationUser() { UserName = model.UserName };
// Add the Admin role to the user.
user.Roles.Add(new IdentityUserRole() { Role = new IdentityRole("Admin") });
var result = await UserManager.CreateAsync(user, model.Password);

if (result.Succeeded)
{
// Code after successfully creating the user.
}
于 2013-11-11T07:06:27.750 回答