2009-08-14 7 views
2

パスワードを検証し、厳密に入力されたビューでパスワードフィールドを確認する最善の方法は何ですか?ASP.NET MVC |どのようにパスワードを確認する価値を扱う?

パスワードフィールドコード:

<label for="BaseUser.PasswordHash">Password</label> 
<%= Html.Password("BaseUser.PasswordHash", Model.BaseUser.PasswordHash)%> 
<%= Html.ValidationMessage("BaseUser.PasswordHash", "*")%> 

私は、MVCの方法で、Confirm Passwordフィールドに対処する方法がわかりません。または単にjavascriptを使用して検証しますか?

+0

この質問からこの回答を確認してください:http://stackoverflow.com/questions/2450198/how-to-validate-two-properties-with-asp-net-mvc-2 –

答えて

4

この種のUI検証ルールは、コントローラで実行される可能性があります(元の回答とは異なります)。 Nerddinner.comのソースコードをダウンロードするには、ValidateRegistrationメソッドが呼び出されて特定の例が表示されるAccountController.Registerメソッドを見てください。

nerddinner.comのサイトを無料でダウンロードして無料でダウンロードできます(http://tinyurl.com/aspnetmvc )。具体的な質問は詳細には載っていませんので、指示通りにソースコードをチェックしてください上記。

ユーザーエクスペリエンスを徐々に強化したい場合は、ビューでjqueryバリデーションプラグインをレイヤーして、クライアント側も検証できます。

javascriptを使用してクライアント上で検証を実行するだけで危険なのは、あなたのビジネスルールを回避し、セキュリティの攻撃を停止する際にあなたの「徹底的な防御」の1つの層をバイパスするためにjavascriptをオフにすることです。とSQLインジェクション。

+0

あなたの返事をありがとう。 ご覧のとおり、ラップモデルを使用してビューを表現しています。しかし、私は自分のシナリオでパスワード検証作業をどのように処理するのか分かりません。私が知っている唯一の方法は、明らかにベストプラクティスではないFormCollection Listをトラバースすることです。 –

+0

実際にパスワード確認用のプロパティを使用してモデルを濁らせたくない場合は、カスタムModelBinderでこの特定の検証を行うことができます。しかし、私はすべてのビジネス/検証ルールをModel.BaseUserまたはModel.Userに収めたいと思う傾向があります。 –

0

私はjavascriptが行く方法です。あなたがサーバー上で検証ルーチンを望むなら(それは、とにかく?標準的なmvcですか?)、うまくいきます。

しかし、なぜ「あなたのパスワードが一致しない」ような簡単な操作を強制するのはなぜですか?そして、誰かが "ハック"(例えば、JavaScriptをオフにする)して、一致しない2つのパスワードを送信できるようにしたい場合は、それでよい。

サーバー上で行うには2つのフィールドがあり、一致しない場合はエラーをスローします。

+0

お返事ありがとうございます。私の問題は、ユーザーサインインビューではなく、ユーザーサインアップビューでパスワードフィールド値とパスワード確認フィールドの値を確認する方法がわかりません。 –

関連する問題