Razorを使用してusers(containinig an id(int) username(nchar(10)
)および)というテーブルに対して非常に単純なユーザー名とパスワードの検証を行おうとしていますが、次のエラーが発生しています。password(char(32)
Operator '==' cannot be applied to operands of type 'WebMatrix.Data.DynamicRecord' and 'HasherMD5Main'
文字列として渡された値を返すmd5ハッシュ()を実行する.csクラスを作成しHasherMD5Main
(セキュリティに関するコメントはありません。これは本番環境には適用されません)、入力したパスワードをハッシュしてからルックアップを実行します。データベース内。
コード
@{// Initialize page
var enteredusername = "";
var enteredpassword = "";
var ErrorMessage = "";
// If this is a POST request, validate and process data
if( IsPost ) {
enteredusername = Request.Form["enteredusername"];
enteredpassword = Request.Form["enteredpassword"];
var hash = new HasherMD5Main( enteredpassword );
if( enteredusername.IsEmpty() || enteredpassword.IsEmpty() ) {
ErrorMessage = "You must specify a username and password.";
}
else {
var db = Database.Open( "MyConnectionString" );
var passwordquery = db.QuerySingle( "SELECT password FROM users WHERE username = @0", enteredusername );
if( passwordquery == hash ) {
Response.Redirect( "/Success" );
}
else {
Response.Redirect( "/Failure" );
}
}
}
}
@if( ErrorMessage != "" ) {
<p>@ErrorMessage</p>
<p>Please correct the errors and try again.</p>
}
<form method="post" action="">
<fieldset>
<legend>Log In to Your Account</legend>
<ol>
<li>
<label>Username:</label>
<input type="text" id="enteredusername" name="enteredusername" />
</li>
<li>
<label>Password:</label>
<input type="password" id="enteredpassword" name="enteredpassword" />
</li>
<li>
<p>
<input type="submit" value="login" /></p>
</li>
</ol>
</fieldset>
</form>
私のアプリが思いついたハッシュパスワードがデータベースに保存されているハッシュと一致するかどうかを簡単に検証する方法についてのアイデアはありますか?