3

誰かが私が持っているいくつかの問題を手伝ってくれる?私は自作の認証方法を作成しようとしていますが、いくつかの領域で立ち往生していて、誰かが助けてくれることを望んでいました。私が最初に聞きたいのは、コードでコメントした問題を解決する方法です。

    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 
    }
4

1 に答える 1

6

「メソッドのように使用できません」は、ブラケットを追加した可能性があります。result.Password()プロパティの場合はブラケットを削除しますresult.Password。括弧を追加すると、実際にはプロパティまたはフィールドであっても、コンパイラはメソッド呼び出しとしてコンパイルしようとします。

students2 番目のエラーは、生徒のリストであるを返そうとしていることです。このメソッドにはstring、戻り値として が必要です。代わりにするつもりでしたreturn result.StudentID;か?List<Student>例外は、からへのキャストをコンパイルしようとして失敗したことを詳述していstringます。

あなたの質問の後半については、私は何のアドバイスもできません。

アップデート

で呼び出されるメソッドが見つかるはずSequenceEqualですbyte[]。これは Linq 拡張メソッドであるため、以下を追加する必要がある場合があります。

using System.Linq;

ファイルの先頭に。

このメソッドに文字列を渡そうとすると、エラーが発生する可能性があります: SequenceEqual(result.Password);.

于 2012-04-24T09:04:52.383 に答える