私のアプリケーションでは、すべてのページが保護されているため、ページにアクセスするにはログインする必要があります。
また、システムの管理者はユーザーを追加できます。
今、何人かの人々は私が人々が同じアカウントを使って同時にログインするのを防ぐ必要があると私に言いました。
つまり、「John」という名前のユーザーがシステムにログインしている場合、パスワードを知っていると、他の人が「John」で再度ログインすることはできません。
また、あるユーザーがログインしたユーザーが自分の希望するアカウントを使用していることに気付いた場合、そのユーザーは前のユーザーをオフラインにすることができます。もしそうなら、私は現在のユーザーが各ページでオフになっているかどうかを判断する必要があります。これは簡単にできる作業ではありません。
これが必要なのかしら?
今日、非常に多くのWebサイトがこれを制限していないことがわかったので、たとえば、同じアカウントを使用してgmail / stackoverflow / yahooにログインし、同時に別のマシンで電気ショック療法を行うことができます。
だから誰でも私に提案を与えることができますか?
アップデート:
ここでは、asp.netのフォーム認証を使用します(メンバーシップはまだ使用していません)。また、データベースのt_userテーブルには、「isOnline」および「last_login_time」という名前の列があります。
ユーザーがログインするとき、「isOnline」を1に設定し、ログイン時間を保存します。
別のユーザーが再度ログインしようとすると、「isOnline」と時刻を確認します。
if("isOnline"==1 && DateTime.now-LastLogiTIme <40min) // where the 40 min is the form authenaication timeout.
thisAccountHasLogined=true;
しかし、ユーザーがまだログインしていると仮定すると、ブラウザのCookieをクリーンアップし、ページを更新すると、ログインページにリダイレクトされますが、フォーム認証がタイムアウトする前に再度ログインすることはできません。 dbは1であり、彼のログインから現在までの期間はフォームのタイムアウトより大きくありません。
私は混乱しています。