简单身份验证方法在登录不正确时会导致错误

本文关键字:错误 不正确 身份验证 方法 登录 简单 | 更新日期: 2023-09-27 18:36:24

我有一个简单的登录功能:

    private bool AdminIsValid(string username, string password)
    {
        bool isValid = false;
        using (var db = new AdminEntities())
        {
            var admin = db.users.FirstOrDefault(u => u.password.Trim() == password);
            if (admin != null)
            {
                if (admin.uname.Trim() == username)
                {
                    isValid = true;
                }
            }
        }
        return isValid;
    }

我像这样使用:

    protected void LoginButton_Click(object sender, EventArgs e)
    {            
        if (AdminIsValid(LoginUser.UserName, LoginUser.Password))
            {
                FormsAuthentication.SetAuthCookie(LoginUser.UserName, false);
                Response.Redirect("../");
            }
            else
            {
               //"Log in data failed"
            }           
    }

它仅在登录成功时有效,当登录失败时,我收到此错误:

由于 启动用户实例的进程。连接将是 闭。

在执行 当前网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

简单身份验证方法在登录不正确时会导致错误

连接字符串中有User Instance=True,请将其删除。此外,您还应该将用户名和密码进行比较,因为多个用户可以具有相同的密码,因此您可以修改您的方法,例如:

private bool AdminIsValid(string username, string password)
{
    using (var db = new AdminEntities())
    {
       return db.users.Any(u => u.password.Trim() == password &&
                                u.uname.Trim() == username);
    }
}

我通过用我自己的连接字符串替换所有ApplicationServices连接字符串来解决此问题。

然后我运行以下命令:

aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName