1

nHibernateを使用して、名前付きクエリを使用してユーザーにログインしようとしていますが、パスワードはハッシュ化されているため、MSSQLDBにバイナリフィールドとして格納されています。ただし、ログインコードを機能させることができません。エラーが発生します:

using (var session = sessionFactory.OpenSession())
{
  user = (CreamUser)session.GetNamedQuery("loginuser")
         .SetString("UserName", userName)
         .SetBinary("Password", hashedPassword).UniqueResult();

}

<sql-query name="loginuser">
    <query-param name="UserName" type="string" />
    <query-param name="Password" type="binary" />
    <return alias="User" class="components.User"/>
    <![CDATA[
    SELECT * FROM users 
    WHERE username=:UserName AND 
    password=:Password 
    ]]>
</sql-query>

考えられることはすべて試しましたが、これを機能させることができません。

4

1 に答える 1

0

わかりましたので、解決しました。実行していたクエリに、返されたタイプ (ユーザー) と一致するフィールドがいくつか欠落していたことが原因であることがわかりました。

これは、他の誰かがこの問題に遭遇した場合のエラーです。

クエリを実行できませんでした\r\n[ SELECT * FROM users \n WHERE username=@p0 AND \n
password=@p1 ]\r\n Name:UserName - Value:admin Name:Password - Value:System.Byte[] \r\n[SQL: SELECT * FROM users \n WHERE username=@p0 AND \n password=@p1]

私を深く見てくれてありがとう

于 2012-08-02T20:55:44.300 に答える