【问题标题】:Check if user exists in MVC4检查用户是否存在于 MVC4 中
【发布时间】:2014-04-30 15:56:55
【问题描述】:

我有没有注册的简单登录表单,因为我创建了管理员登录,它创建了新用户。所以管理员登录,并创建新用户,然后可以使用该特定用户名和密码登录。

所以我创建了这个控制器:

    public ActionResult CreateNew(Models.Users user)
    {

        if (ModelState.IsValid)
        {
            try
            {
                using (var dataU = new userDbEntities())
                {
                    var crypto = new SimpleCrypto.PBKDF2();
                    var encrpPass = crypto.Compute(user.Password);
                    var sysUser = dataU.UsersTables.Create();

                    sysUser.username = user.Username;
                    sysUser.password = encrpPass;
                    sysUser.passwordSalt = crypto.Salt;
                    sysUser.TimeZoneId = user.TimeZoneName;
                    sysUser.Customer = user.Customer;

                    dataU.UsersTables.Add(sysUser);
                    dataU.SaveChanges();
                    return RedirectToAction("Registration", "LoginAdmin");
                }
            }
            catch (Exception ex)
            {
                string error = ex.Message;
            }

        }

        return View(user);
    }

问题是,我可以创建具有相同用户名的用户(这不行!),所以如何检查具有该名称的用户是否存在并返回,这个用户名已经存在......

谢谢...

【问题讨论】:

  • 嗯。你用的是什么数据库?
  • Microsoft SQL Server 2012 Management Studio,数据库名为userDbEntities,表为UserTable。

标签: asp.net-mvc unique registration


【解决方案1】:

统计用户名相同的用户数,如果为0则添加用户。

例如

var count = dataU.UsersTables.Count(u=>u.UserName == usernameyouwanttocheck);
if(count==0)
{
  //add user
}
else
{
  //alert user saying user exists
}

如果我是你,我会创建存储库并创建一个函数来检查用户是否存在并从控制器调用该函数。

【讨论】:

  • 好的,这很好用:D,但是,这仅适用于一个特定的用户(用户名youwhanttocheck),但是如何检查我表中的所有用户,所有用户都必须有唯一的名字......
  • 在开始将用户添加到数据库之前,您必须检查用户是否存在。 usernameyouwhanttocheck 只是一个字符串,应该是您要添加到数据库的用户。如果您从视图中获取用户名,那么usernameyouwhanttocheck 是用户提供的用户名。
【解决方案2】:

在 Biplov13 的帮助下,我创建了这个,它正在工作:

public ActionResult CreateNew(Models.Users user)
        {

            if (ModelState.IsValid)
            {
                try
                {
                    using (var dataU = new userDbEntities())
                    {

                        {
                            var crypto = new SimpleCrypto.PBKDF2();
                            var encrpPass = crypto.Compute(user.Password);
                            var sysUser = dataU.UsersTables.Create();

                            sysUser.username = user.Username;
                            sysUser.password = encrpPass;
                            sysUser.passwordSalt = crypto.Salt;
                            sysUser.TimeZoneId = user.TimeZoneName;
                            sysUser.Customer = user.Customer;

                            var count = dataU.UsersTables.Count(u => u.username == user.Username);
                            if (count == 0)
                            {
                                dataU.UsersTables.Add(sysUser);
                                dataU.SaveChanges();
                                return RedirectToAction("Registracija", "LoginAdmin");
                            }
                            else
                            {
                                // something to do if user exist...
                            }


                        }

                    }
                }
                catch (Exception ex)
                {
                    string error = ex.Message;
                }

            }

            return View(user);
        }

【讨论】:

    猜你喜欢
    • 2018-04-23
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2019-01-04
    • 2013-08-31
    相关资源
    最近更新 更多