【问题标题】:perform case-sensitive query with Linq to sql?使用 Linq to sql 执行区分大小写的查询?
【发布时间】:2019-06-17 02:44:12
【问题描述】:

如何强制 LINQ to SQL 在数据库端进行区分大小写的比较?身份验证时,我需要密码身份验证区分大小写,而用户名不区分大小写。生成的查询不区分 SQL 服务器比较不区分大小写。

public Boolean checkLogin(string uname, string pwd)
        {
            DataClassesDataContext dc = new DataClassesDataContext(RetrieveConnection());

            int count=(from c  in dc.Logins
                      where c.UserName == uname && c.Password == pwd
                      select c).Count();
            if(count>0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

【问题讨论】:

  • SQL 端会做什么样的比较取决于使用的排序规则名称。默认为Latin1_General_CI_AS,其中CI 表示不区分大小写。所以整个数据库中的所有文本都被威胁不区分大小写,并且不能在表或列级别上设置此选项。但是到底为什么要在数据库中以明文形式保存密码呢?使用哈希算法和盐并保存它。然后可以不区分大小写。

标签: linq


【解决方案1】:

您在这方面的方法不是很好。最好的方法是使用方法string.ToLower() 将所有用户名以小写字母保存在数据库中。关于密码,也许您应该尝试一些加密方法,而不是将字符串作为密码存储在数据库中。有很多简单的加密方法,所以并不太复杂(见System.Crypthography

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多