我想在我的登录屏幕上执行两个步骤,UserGroup和UserName就像;
A组
B组
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帐户控制器或帐户模型? 或使用其他会员资格?
答案 0 :(得分:0)
我可能没有正确理解你的问题。如果要为多个组注册相同的用户名,则需要使用不同的数据库设计。您将需要创建一个映射表,例如具有UserId和GroupId的UsersInGroups。这样,您的用户就可以拥有与之关联的多个组。
然后,您可以查询该表,获取userid的所有记录并获取所有关联的组,并比较它是否与输入的组匹配。