【问题标题】:Query Case Sensitive with FirstOrDefault C# mvc4使用 FirstOrDefault C# mvc4 查询区分大小写
【发布时间】:2014-10-29 01:08:30
【问题描述】:

我正在尝试评估用户和密码,但如果我使用大写或小写,我得到相同的结果,数据库区分大小写,但它一直忽略该配置这是我的代码:

public ActionResult Login(Model.user user){

    bool isValid=false;
    var user= db.users.FirstOrDefault(u=>u.user==user.user && u.password==user.password)
    if(user!=null){
      isValid=true;          
    }
}

我做错了什么?

【问题讨论】:

  • “我做错了什么?” - 以明文形式存储密码并滚动您自己的身份验证系统。不要重新发明轮子,尤其是在安全敏感的环境中。
  • 显然我没有这样的密码,我的问题是我为用户或密码输入大写或小写,它让我可以访问网站,我需要进行区分大小写的搜索@ CodeCaster

标签: c# asp.net-mvc-4


【解决方案1】:

试试这个:-

var query = users.FirstOrDefault(u => u.UserName == user.UserName && String.Compare(u.Password, user.Password,false) == 0);

工作Fiddle

根据 OP 的问题(基于数据库):-

var query = db.Users.ToList().Where(x => (string.Compare(x.UserName, user.UserName, false) == 0) && (string.Compare(x.Password, user.Password, false) == 0)).FirstOrDefault();

【讨论】:

  • 这可能不起作用,如果您在数据库上查询它,并且数据库配置为“不区分大小写”。
  • 如果数据库配置为“不区分大小写”(默认情况下 SQL 不区分大小写),则会抛出以下错误...方法“布尔等于 system.string system.stringcomparison”有不支持对 sql 的翻译
  • @DotNetIsMyPower - 我正在考虑基于对象而不是基于 SQL 的实体,如果 OP 只需要比较密码,他可以在基于 SQL 的 LINQ 中比较用户名,然后在基于对象的 LINQ 中转换广告比较.已更新代码。
  • @RahulSingh 让我试试这个,我会告诉你进展如何,...谢谢大家!
  • @DuSant - 刚才注意到您需要用户名比较来区分大小写。已更新代码,请检查并告诉我。
【解决方案2】:

试试这个方法

var result = from userlist in context.UserMasters
             where userlist.UserName.Equals(username)

// May be better (if usernames are unique):
var result = context.UserMasters.SingleOrDefault(u=>u.UserName == username);

if(result == null){
   // Did not find any user(s)
}

// If you want a case sensitive password check
if(result.UserPassword == pass){
  // The password is correct
}
else
{
      throw new Exception("Invalid password");
}

// If you don't
if(result.UserPassword.Equals(pass, StringComparison.InvariantCulture)){
  // The password is correct
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    相关资源
    最近更新 更多