如何使用OWIN

时间:2015-08-23 05:30:46

标签: asp.net asp.net-mvc asp.net-mvc-4

我是ASP.NET新手,我正在制作一个简单的练习项目。我从没有认证的简单MVC项目开始,因为它添加了许多我不理解的代码。

但是现在我想为我的系统添加会员资格,所以我遵循了这个指南:

http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-1

http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-2

但我不知道在哪里可以向用户实体添加角色..

My Startup课程是这样的:

public class Startup
    {
        public static Func<UserManager<Usuario>> UserManagerFactory { get; private set; }
        public void Configuration(IAppBuilder app)
        {
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "ApplicationCookie"
            });
            UserManagerFactory = () =>
                {
                    var usermanager = new UserManager<Usuario>(new UserStore<Usuario>(new Vetpet3Context()));
                    usermanager.UserValidator = new UserValidator<Usuario>(usermanager)
                    {
                        AllowOnlyAlphanumericUserNames = false
                    };
                    return usermanager;
                };
        }
    }

我正在使用此操作创建(现在)我的用户:

[HttpPost]
        public async Task<ActionResult> Register(RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }

            var user = new Usuario
            {
                UserName=model.correo,
                correo = model.correo
            };
            var result = await userManager.CreateAsync(user, model.password);
            if (result.Succeeded)
            {
                await SignIn(user);
                return RedirectToAction("index", "Home");
            }
            foreach (var error in result.Errors)
            {
                ModelState.AddModelError("", error);
            }

            return View();
        }

所以此时一切正常,但我需要为用户添加不同的角色,这就是我如何实现这一部分的问题?我已阅读了很多指南,但每个人都做了不同的事情,我不确定如何为新用户添加角色以及如何在登录时声明这些角色

1 个答案:

答案 0 :(得分:3)

在成功注册后为用户添加角色:

if (result.Succeeded)
            {
                var roleResult = userManager.AddToRole(user.Id, "Admin");
                await SignIn(user);
                return RedirectToAction("index", "Home");
            }

检查用户是否处于角色:

userManager.IsInRole(user.Id, "Admin");
在任何ASP.NET MVC [授权]控制器中

甚至更简单:

User.IsInRole("roleName");