0

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

A组

  • 用户 ID=1 用户名=ahmet
  • UserID=2 用户名=mehmet, name=mehmet, surname=demir
  • UserID=3 用户名=ali, name=ali, surname=bakır

B组

  • 用户 ID=4 用户名=veli
  • UserID=5 用户名=mehmet, name=mehmet, surname=çelik
  • UserID=6 用户名=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 帐户控制器或帐户模型?或使用其他会员资格?

4

1 回答 1

0

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

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

于 2013-02-20T03:28:32.750 回答