Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的登录方法没有';为什么不在数据库中比较电子邮件和密码?_C#_Asp.net Mvc 5.2 - Fatal编程技术网

C# 我的登录方法没有';为什么不在数据库中比较电子邮件和密码?

C# 我的登录方法没有';为什么不在数据库中比较电子邮件和密码?,c#,asp.net-mvc-5.2,C#,Asp.net Mvc 5.2,这是我在Repository类中的登录方法,我正在编写一个逻辑来检查电子邮件id和密码,它将匹配数据库中已注册的用户,如果电子邮件和密码在db中匹配,则返回true public bool Login(Models.Login user) { Eseal.UserRegister u = null; try { string Dpassword = Decrypt(user.Password);

这是我在Repository类中的登录方法,我正在编写一个逻辑来检查电子邮件id和密码,它将匹配数据库中已注册的用户,如果电子邮件和密码在db中匹配,则返回true

    public bool Login(Models.Login user)
    {
        Eseal.UserRegister u = null;
        try
        {
            string Dpassword = Decrypt(user.Password);
            using (var dbContext = new MVCDEMOEntities())
            {
                u = dbContext.UserRegisters.Where(query => query.EmailID.Equals(user.EmailID) && query.Password.Equals(user.Password)).SingleOrDefault();
            }
            if (u == null)
                return false
            else
                return true;
        }
        catch (Exception)
        {

            throw;
        }
     }
这是我的帐户控制器代码

public ActionResult Login(Models.Login user)
    {
       try
        {
            var services = new RegisterService();
            services.LoginRegister(user);

            return RedirectToAction("Privacy");
        }
        catch (Exception)
        {

            throw;
        }

    }
这是我的保存寄存器方法 这是我的服务课
将数据库中的加密密码与用户提供的纯文本密码进行比较

您应该在将普通密码与数据库中的密码进行比较之前对其进行加密

public bool Login(Models.Login user)
{
    var encryptedGivenPassword = encrypt(user.Password);
    using (var dbContext = new MVCDEMOEntities())
    {
        return dbContext.UserRegisters.Where(u => u.EmailID == user.EmailID)
                                      .Where(u => u.Password == encryptedGivenPassword)
                                      .Any();
    }
 }
您的服务方法应该返回
Login
方法的结果

public bool LoginRegister(Models.Login user) 
{ 
    return _repository.Login(user); 
}
然后在登录控制器中调用此方法

public ActionResult Login(Models.Login user)
{
   var services = new RegisterService();
   if (services.Login(user))
   {
       return RedirectToAction("Privacy");
   }
   else
   {
       return Unathorized();
   }
}

你可以摆脱多余的
try。。捕获
wrappers.

您将数据库中的加密密码与用户提供的纯文本密码进行比较

您应该在将普通密码与数据库中的密码进行比较之前对其进行加密

public bool Login(Models.Login user)
{
    var encryptedGivenPassword = encrypt(user.Password);
    using (var dbContext = new MVCDEMOEntities())
    {
        return dbContext.UserRegisters.Where(u => u.EmailID == user.EmailID)
                                      .Where(u => u.Password == encryptedGivenPassword)
                                      .Any();
    }
 }
您的服务方法应该返回
Login
方法的结果

public bool LoginRegister(Models.Login user) 
{ 
    return _repository.Login(user); 
}
然后在登录控制器中调用此方法

public ActionResult Login(Models.Login user)
{
   var services = new RegisterService();
   if (services.Login(user))
   {
       return RedirectToAction("Privacy");
   }
   else
   {
       return Unathorized();
   }
}

你可以摆脱多余的
try。。捕获
wrappers.

您是否调试了代码
u==null
true?您是否也可以共享
LoginRegister
方法的代码?u的可能重复项显示null sirDPassword是db保存的密码,user.password是用户输入的密码在LINQ查询之外进行加密。您是否调试了代码
u==null
true?您是否也可以共享
LoginRegister
方法的代码?u的可能重复项显示null sirDPassword是db保存的密码,user.password是用户输入的密码在LINQ查询之外进行加密。您修改的代码也不起作用。如果用户还没有注册,它也可以工作。@NiranjanS,您需要在控制器中调用
Login
方法。我担心当您调用
LoginRegister
时,您将注册新用户,而不仅仅是验证它。public void LoginRegister(Models.Login user){var result=_repository.Login(user);}我正在调用服务中的Login方法layer@NiranjanS,您需要将
Login
方法的结果返回控制器,您可以根据该结果返回正确的视图。您可以@Fabio向我发送任何代码参考链接,或者告诉我在哪里修改代码。因为我不熟悉MVC,所以您修改的代码也不起作用。如果用户还没有注册,它也可以工作。@NiranjanS,您需要在控制器中调用
Login
方法。我担心当您调用
LoginRegister
时,您将注册新用户,而不仅仅是验证它。public void LoginRegister(Models.Login user){var result=_repository.Login(user);}我正在调用服务中的Login方法layer@NiranjanS,您需要将
Login
方法的结果返回控制器,您可以根据该结果返回正确的视图。您可以@Fabio向我发送任何代码参考链接,或者告诉我在哪里修改代码。因为我是MVC新手