gpt4 book ai didi

c# - byte[] 不包含 SequenceEqual 身份验证方法的定义

转载 作者:行者123 更新时间:2023-12-04 20:16:17 27 4
gpt4 key购买 nike

任何人都可以帮助解决我遇到的一些问题。我正在尝试创建一种自制的身份验证方法,我有点卡在几个方面,希望有人能提供帮助。我首先想问的是如何解决我在代码中评论的问题:

    public string Authentication(string studentID, string password)
{
var result = students.FirstOrDefault(n => n.StudentID == studentID);
//find the StudentID that matches the string studentID
if (result != null)
//if result matches then do this
{
//----------------------------------------------------------------------------
byte[] passwordHash = Hash(password, result.Salt);
string HashedPassword = Convert.ToBase64String(passwordHash);
//----------------------------------------------------------------------------
// take the specific students salt and generate hash/salt for string password (same way student.Passowrd was created)

System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
byte[] UserPassword = enc.GetBytes(HashedPassword);
UserPassword.SequenceEqual(result.Password); // byte[] does not contain a definition for SequenceEqual?
//check if the HashedPassword (string password) matches the stored student.Password
}
return result.StudentID;
//if string password(HashedPassword) matches stored hash(student.Passowrd) return student list


//else return a message saying login failed
}

最佳答案

“不能像方法一样使用”可能是因为您添加了方括号:result.Password()如果它是属性,请去掉括号 result.Password .添加括号会使编译器尝试将其编译为方法调用,而实际上它是一个属性或字段。

第二个错误是您试图返回 students ,这是一个学生列表。该方法需要 string作为返回值。你是不是想改为 return result.StudentID; ?异常详细说明了从 List<Student> 编译类型转换的失败尝试至 string .

我无法就您问题的后半部分提供任何建议。

更新

您应该找到一个名为 SequenceEqual 的方法在 byte[] .这是一个 Linq 扩展方法,因此您可能需要添加:

using System.Linq;

到文件的顶部。

然后您可能会在尝试将字符串传递给此方法时遇到错误:SequenceEqual(result.Password); .

关于c# - byte[] 不包含 SequenceEqual 身份验证方法的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294817/

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