gpt4 book ai didi

linq - EF中如何比较区分大小写的字符串?

转载 作者:行者123 更新时间:2023-12-02 21:41:27 25 4
gpt4 key购买 nike

使用 EF 的成员(member)提供程序 ValidateUser 非常简单

public override bool ValidateUser(string username, string password)
{
// Validate User Credentials
var r = db.ST_Users.FirstOrDefault(
x => x.Username.Equals(username) &&
x.Password.Equals(password));
return r != null ? true : false;
}

但是无论我使用 balexandre 还是 BAleXanDre,都会返回 true(查找并检索孔对象)。

How can I enable EF to compare in case-sensitive mode?

我知道如何在不区分大小写的情况下进行比较(使用 StringComparison.CurrentCultureIgnoreCase 重载,但我只想相反)

最佳答案

您不应查询密码。您应该检索 User 对象并在本地进行密码比较,因为 SQL Server 默认情况下会为您进行不区分大小写的比较(除非您更改数据库设置,这不是您应该掉以轻心的事情) .

var r = db.ST_Users.SingleOrDefault(x => x.Username == username);

return r != null && r.Password == password;

此外,您似乎在数据库中存储了纯密码。根据应用程序的类型,这可能不是一个好主意。尝试用盐对它们进行哈希处理。在 Stackoverflow 上可以找到很多关于这方面的好信息。例如,看一下 this questionthis website .

关于linq - EF中如何比较区分大小写的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com