C# 我的登录方法没有';为什么不在数据库中比较电子邮件和密码?
这是我在Repository类中的登录方法,我正在编写一个逻辑来检查电子邮件id和密码,它将匹配数据库中已注册的用户,如果电子邮件和密码在db中匹配,则返回trueC# 我的登录方法没有';为什么不在数据库中比较电子邮件和密码?,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);
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新手