1

さまざまな Web サイトを備えた 5 つのバランスの取れた Web サーバーがあります。私が達成しようとしているのは、単一のログインを確実にすることです。つまり、同じユーザー アカウントが同じ Web サイトに一度に複数回ログインすることはできません。

これを解決するために私が検討している方法は、サーバー間でセッションを共有して、どのセッションをどのアカウントに割り当てるかを制御できるようにすることです。その後、ログインを制御できます。ユーザーがログインし、そのユーザー アカウントに既にセッションが割り当てられている場合、最初のセッションを期限切れにするか、ログインを拒否することができます。

バランスの取れたサーバーの利点を失いたくないので、セッション状態サーバーとして単一の SQL Server を使用したり、ログインを処理するために単一のサーバーを使用したりすることはできません。

分散セッション ( Scaleout Sofwareのようなもの) は、これを達成するための正しいアプローチですか?

または、私が幸いなことに気付いていない単一のログインを処理する別のメカニズムはありますか?

4

1 に答える 1

1

ここには 2 つの問題があります:
1) Web ファームのシナリオで 1 人の接続ユーザーのみを許可する
2) ユーザーのログオフ

を検出するASP.Net セッションまたはその他の種類の集中型ユーザー状態。この中央ストレージは、セッション状態のネイティブ管理を使用するSQL Server(ところで、Oracle 11からのOracleもセッションストレージをサポートできます)、AspStateサービス、またはScaleOut(あなたが言ったように)またはそのオープンソースの代替memcachedなどの外部ソリューションです。 ( https://sourceforge.net/projects/memcacheddotnet/を参照))。または、SQL Server データベースに対してアクティブなログインをチェックする単純な集中型 Web サービスを設計することもできます。これにより、ログオン ユーザーなどに関するレポート ツールをすばやく作成することもできます。


私の意見では、本当の問題は 2 番目の部分にあり、Web の世界で発生するさまざまな「間違ったログオフ」シナリオ (クラッシュのためにブラウザーを閉じたり、ログオフせずにアプリケーションをシャットダウンしたりするなど) を維持する必要があるということです。古いセッションが有効になっているユーザーと適切に連携する方法をアプリケーションに提供します(最初のセッションを期限切れにするだけで機能すると言ったように)。

また、SQL サーバーのような状態サーバーを使用しても、バランスの取れたサーバーが失われることはありません。Web ファーム環境と共有セッションを使用する方法であれば、問題はパフォーマンス (セッション状態が大きくなった場合) だけです。適切なライセンスをまだ持っていない場合は、SQL Server の使用にかかる費用がかかります。

于 2008-09-30T07:55:00.880 に答える