私は自分のパスワードをsaltにしようとしています。ここで出力パラメータでEntity Frameworkプロシージャを呼び出すときにエラーが発生しました
のデータ型はnvarchar(512)としての私のPWを返す私SPROCです:
public virtual ObjectResult<string> g_GetPWFromEmail(string emailAddress, ObjectParameter encrPass)
{
var emailAddressParameter = emailAddress != null ?
new ObjectParameter("emailAddress", emailAddress) :
new ObjectParameter("emailAddress", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("g_GetPWFromEmail", emailAddressParameter, encrPass);
}
そして、私はそれがエラーをそれ呼び出す:ここ
alter proc [dbo].g_GetPWFromEmail
@emailAddress nvarchar(50),
@EncrPass nvarchar(512) OUTPUT
as
if ((Select count(*) from users where emailAddress = @emailAddress) > 0)
begin
select @EncrPass = password
from users
where emailAddress = @emailAddress
end
else
begin
select @EncrPass = ''
end
はemdxファイルにスキャフォールドしたものですアウト...わからないどのようにこれを呼び出すために - ここで私はこれまで持っているものである:私は私を返すために、これを呼び出すにはどうすればよい
//Pull Current Encrypted Password from DB
string DbPw = "";
ObjectParameter DBPW1 = null;
var DbPassWord = databaseManager.g_GetPWFromEmail(model.Username, DBPW1).ToList();
if (DbPassWord != null && DbPassWord.Count() > 0)
{
DbPw = Convert.ToString(DBPW1);
}
をDBからハッシュされたpw?私は良い方法があることを知っていますが、いくつかの方法を試してきましたが、構文をかなり正しいものにすることはできません。
保存されたprocのポイントは何ですか?ハッシュがデータベースにあるものと一致するかどうかを確認しようとしていますか(それはあなたがするべきものなのですか?) – DavidG
あなたのメソッド 'g_GetPWFromEmail()'は文字列を返すので、文字列に変換する必要はありません。文字列です...小文字で始まり、 [Microsoft命名規則](https://msdn.microsoft.com/en-us/library/ms229045(v = vs.110).aspx)に対して)。 '〜= null && Count()> 0'の代わりに' string.IsNullorWhiteSpace() 'を使うべきです。手順を実行する方法は非常に古いです。[Execute SP](http://www.entityframeworktutorial.net/EntityFramework4.3/execute-stored-procedure-using-dbcontext.aspx)をお読みください。 –
まさに - はい - ハッシュがデータベースにあるものと一致するかどうかをチェックしようとしています。私はこのコードを動作させることができません!どんな考えがされても結構です。リンク先のサイトを見ると、ヘルパーファイルが表示されます。 –