如何在VisualStudio 2013 RC AccountController.cs中的Microsoft.Owin.Security中创建角色 - API文档

时间:2013-10-16 22:57:41

标签: asp.net-mvc

在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的替代品,如果是的话,Microsoft的OWIN API是什么来创建角色和用户?似乎无法在MSDN中找到关于OWIN的大量文档。有没有人创建任何示例代码或知道任何解释的文档 如何使用微软的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");

    }

1 个答案:

答案 0 :(得分: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.
}