2011-09-29 1 views
-4

私はsql server2008vs2010(.net)を使用していますこのプロジェクトで銀行アプリケーションプロジェクトを作成しています今、私の問題はアカウントのログインページです、ユーザーは3時間間違ったパスワードを入力します今日は唯一の翌日(日付変更)コードplsは私を助けます。どのようにSQL Serverのテーブル内の列データを自動的に変更日に基づいて変更するには?

は hemanth

+3

db内に 'locked/out date/time'のようなものを保存し、誰かがログオンしようとするたびに現在の日付/時刻がそれより大きいことを確認してください... – forsvarir

答えて

2

列がAccountLockedUntil(DATETIME NULLなど)であり、しきい値に達した翌深夜に設定します。資格情報を検証するときに、NULLか、現在の時刻がそこに格納されているものを超えているかどうかを確認します。ユーザーが正常にログインすると、NULLに設定されます。

失敗したログインの数を追跡するために、完全な監査ログテーブル(成功と失敗の両方のログ記録)と、失敗したログインの現在の数をカウントするユーザーアカウントテーブルの対応するフィールドがあります。厳密に言えば、これはデータベースの正規化に違反していますが、監査テーブルは非常に高速になりますので、必要以上に検索する必要はなく、すべてのログイン試行では必要ありません。

+0

この方法で3つの失敗をどのように追跡しますか?これは、ロックが終了したときのみ追跡します。 –

+0

私は、主にロック/ロック解除の動作に関係しているという質問を読んでいます。編集されました。 –

+2

誰にでもこれを落とした人に:通常、ダウンボートを説明するコメントを残すことは礼儀正しいと考えられるので、答えを改善することができます。 –

0

LoginEventsと呼ばれるテーブルを作成します。ありがとう。ユーザがログインしようとすると、ここにエントリを作成します(ユーザID、日付、成功/失敗フラグ)。ログイン・ページをロードするときは、fail = trueを持ち、date >= today's date - 1の3つ(またはそれ以上)の項目をこの表で確認してください。 3人以上のユーザーがいる場合は、アカウントがブロックされているというエラーメッセージが表示されます。

関連する問題