创建更复杂的登录页面..哪个会员?

时间:2013-02-19 12:08:51

标签: asp.net-mvc login membership

我想在我的登录屏幕上执行两个步骤,UserGroup和UserName就像;

A组

  • UserID = 1 Username = ahmet
  • UserID = 2 Username = mehmet,name = mehmet,surname = demir
  • UserID = 3 Username = ali,name = ali,surname =bakır

B组

  • UserID = 4 Username = veli
  • UserID = 5 Username = mehmet,name = mehmet,surname =çelik
  • UserID = 6 Username = ali,name = ali,surname =pirinç

http://i.stack.imgur.com/0dasj.png

当Mehmet Demir想要登录时,他必须使用aGroup,mehmet和他的密码, 当MehmetÇelik想要登录时,他必须使用bGroup,mehmet和他的密码..

我必须使用哪个会员资格?

我尝试使用ASP.NET SimpleMembership; 我的数据库图是;

http://i.stack.imgur.com/yVpKp.png

我试试这个

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (model.UserGroupName != null)
        {
            UsersContext userContext = new UsersContext();
            DbEntities db = new DbEntities();
            var userGroupName = model.UserGroupName;
            var userGroupID = db.UserGroups.Where(a => a.UserGroupName == userGroupName).Select(b => b.UserGroupID).Single();
            var userName = userContext.UserProfiles.Where(c => c.UserGroupID == userGroupID).Select(d => d.UserName);

            if (userName.Contains(model.UserName))
            {
                if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password))
                {
                    return RedirectToLocal(returnUrl);
                }
            }


        }
        // If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "User group, username or password is incorrect..");
        return View(model);
    }

它有效,但当我想创建新用户时,我无法在不同的用户组中注册相同的用户名。

如何自定义SimpleMembership帐户控制器或帐户模型? 或使用其他会员资格?

1 个答案:

答案 0 :(得分:0)

我可能没有正确理解你的问题。如果要为多个组注册相同的用户名,则需要使用不同的数据库设计。您将需要创建一个映射表,例如具有UserId和GroupId的UsersInGroups。这样,您的用户就可以拥有与之关联的多个组。

然后,您可以查询该表,获取userid的所有记录并获取所有关联的组,并比较它是否与输入的组匹配。