当前位置:  开发笔记 > 编程语言 > 正文

如何自动将用户添加到角色

如何解决《如何自动将用户添加到角色》经验,为你挑选了1个好方法。

我正在构建一个小型MVC4网站,并使用SimpleMembershipProvider和SimpleRoleProvider.

我播种了我的数据库,以便[webpages_Roles]包含"Administrator"和"User"(类似于:link).

使用帐户和用户配置文件模型的所有内容都与创建MVC4项目时一样.

现在我该如何制作它以便当有人注册时它们会自动被置于"用户"角色?



1> Andy Brown..:

通常,您的所有用户注册逻辑都将驻留在您的帐户控制器中(如果您使用其中一个提供的Internet应用程序模板,则肯定会出现这种情况).因此,您需要在注册方法中添加代码,以便在成功创建帐户后将用户添加到用户角色.

这比试图观看一个事件更简单,更整洁,即使存在一个事件.您应该会发现,在一个设计良好的应用程序中,您无论如何都不会在任何一个地方拥有您的注册码.如果您使用Facebook等社交网络登录,这也可以让您处理OAuth场景.

例如,您可以将它与Internet应用程序模板中的开箱即用的AccountController一起使用(用于本地站点注册)

[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{
    ... various actions ...

    // GET: /Account/Register
    [AllowAnonymous]
    public ActionResult Register() {
        return View();
    }
    // POST: /Account/Register
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Register(RegisterModel model) {
        if (ModelState.IsValid) {
            // Attempt to register the user
            try {
                WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
// ----------------- NEW LINES HERE
                Roles.AddUserToRoles(model.UserName, new[] { "Users" });
// ----------------- END NEW LINES
                WebSecurity.Login(model.UserName, model.Password);
                return RedirectToAction("Index", "Home");
            }
            catch (MembershipCreateUserException e) {
                ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
            }
        }

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

    ... more actions ...
}

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有