由于某种原因,我在这个查询中并不总是为空,我不知道为什么我已经进行了调查,我没有得到任何值,但我的数据网格很好,并且显示用户。
public Boolean VerifyPassword(string userName, string password)
{
//The ".FirstOrDefault()" method will return either the first matched
//result or null
var myUser = soccerEntities.Users
.FirstOrDefault(u => u.UserName == userName
&& u.password == password);
if (myUser == null) //User was not found
{
//Proceed with your login process...
return false;
}
else //User was found
{
return true;
//Do something to let them know that their credentials were not valid
}
}
这是我的足球运动员
private soccerEntities _soccerEntities;
protected soccerEntities soccerEntities
{
get
{
if (_soccerEntities == null)
{
try
{
_soccerEntities = new soccerEntities();
}
catch (Exception ex)
{
throw new EntityContextException("Soccer Entities Could not be created", ex);
}
}
return _soccerEntities;
}
}
答案 0 :(得分:4)
您检索的数据很可能与给定的用户名和密码字符串不匹配。
也许:
没有信息,我能给出的唯一建议就是调整你比较字符串的方式。
答案 1 :(得分:1)
从问题看来,我认为该方法始终以false结尾,因此:
<VirtualHost *:80>
ServerName site.dev
ServerAlias www.site.dev
DocumentRoot /Applications/MAMP/htdocs/bo/web
<Directory /Applications/MAMP/htdocs/bo/web>
AllowOverride All
Order Allow,Deny
Allow from All
</Directory>
</VirtualHost>
将myUser设置为null。
如果是这种情况,那么它指向数据的方向而不是逻辑。因此,我强烈建议做以下事情: 1.)当你到达那条线时,检查soccerEntities.Users是否被填充 2.)检查是否有任何填充字符附加(例如,如果数据库表coloumn是char类型而不是varchar,则为空白。)
另外一件事是你应该使用.Equals而不是==。
例如,如果您想确保没有空白“污染”结果,您可以测试以下内容并稍后删除.Trim()vom userName.Trim()和password.Trim():
php app/console assetic:dump
但正如所说的那样,你所说的所有内容都指向一个数据问题,所以你拥有的数据都是空的,或者不是你想要的(比如前导或尾随空白)
如果问题是大字母和小字母,你应该将它们转换为一种字母,例如使用u.password.Trim()。ToUpper()将所有字母转换为大字的等效字母。
编辑:值得注意: 上述内容仅在数据库和uername,password不为null时才有效。然后.Trim()失败并且u.UserName.Equals(也失败。因此,如果那可能是这种情况,你必须确保只有当它不为null时才调用u.Username.Equals
var myUser = soccerEntities.Users
.FirstOrDefault(u => u.UserName == userName
&& u.password == password);
u.password也是如此。如果userName和password可以为null,我会在方法的开头将它们设置为String.Empty,否则会变得非常复杂。
答案 2 :(得分:0)
我会用:
public Boolean VerifyPassword(string userName, string password)
{
return soccerEntities.Users
.Any(u => u.UserName == userName
&& u.password == password);
}