1

私のasp.net mvcサイトには何らかの承認が必要ですが、それはユーザーの通常の概念とはかなり異なり、したがってメンバーシップです。実際には、認証よりも設定に使用されます。パスワードなしのアカウントが可能である必要があり (最初はこれが唯一のタイプになります)、1 つのアカウントを複数のユーザーが同時に使用することもできます。ユーザー グループによっては、たとえば、特定の地域のすべてのユーザーが共有アカウントを取得する場合があります。これはクライアント (のマーケティング部門) の決定であり、議論の対象ではありません。

特定のランディング ページは、アカウントをロードする URL で (のみ) userId を取得します。アカウントには、サイトの残りの部分で使用できるいくつかの設定がリンクされています。
ユーザーがランディング ページから開始しない場合、または送信された accountId がシステム内のレコードと一致しない場合、ユーザーには既定の設定を持つ既定のアカウントが割り当てられます。

私は車輪を再発明するのではなく (誰かがこれの新しい表現を見つけるべきです)、asp.net メンバーシップ システムを使用することを考えていました。しかし、システム全体は、必要なパスワード、電子メール、およびユーザーごとの単一セッションに基づいており、これらはすべて私が提供することはできません. 状況は少し型にはまらないので、カスタム MembershipProvider などが配置されると思いました。しかし、これの要点は、通常のメンバーシップ クラスから継承しているようです。これらのクラスのメソッドはすべて、私が必要としないものを必要とします。

助言がありますか

4

2 に答える 2

1

標準のメンバーシップ プロバイダーを使用し、組み込みの .Validate() メソッドを使用して、認証なしですべてのアカウントの「標準」であるユーザー名とパスワードを送信できます。

「パスワード付きの検証済みログイン」用と「パスワードなしの共有アカウント」用の 2 つの異なるユーザー コントロールを用意します。 / 1 "

幸運を祈ります。楽しいプロジェクトのようです。結果が楽しみです ;)

ところで、セッションを共有する必要はありません。または、セッションをデータベースに保存し、セッションを Cookie の代わりにユーザーにマップするだけでうまくいくでしょうか?


リクエストに応じて、さまざまなユーザー コントロールについて詳しく説明します。簡単に言えば、2 つのコントロールがあり、1 つは GlobalLogin と呼ばれ、もう 1 つは UserLogin と呼ばれ、GlobalLogin はユーザー名のみを持つフォームを表示します。送信されると、前に述べたように、Validate メソッドを呼び出す関数を使用する関数がトリガーされます。事前に設定されたパスワードを持つメンバーシップ プロバイダー。

反映として、すべての「パスワードでログインしていない」ユーザーを匿名として表示し、同じように扱います。唯一の違いは、ユーザー固有の領域にアクセスできることです。このコントロールは、「パスワードなしでグローバルに使用されるアカウントを許可する」フィールドなど、データベース内の特定のフィールドが設定されていることも確認する必要があります。この場合、このログインが受け入れられるには、ビット/ブール値が true である必要があります。

もう 1 つの部分である、パスワードで保護されたアカウントを処理するコントロールには、ユーザー名とパスワードの両方が必要であり、これらの設定で Validate を呼び出します。ここで、パスワードを使用してログインしている場合、パスワードを変更できることを覚えておいてください。これは、グローバル アカウントでは可能であってはなりません。なぜなら、グローバル パスワードは機能しないからです :)

于 2008-12-17T09:26:30.450 に答える
-1

メンバーシップ プロバイダーの詳細については、http://msdn.microsoft.com/en-us/library/f1kyba5e.aspxを参照してください。基本的に、新しいプロバイダーを作成するか、既存のプロバイダーから派生させ、常に true を返すように ValidateUser メソッドをオーバーロードする必要があります。

于 2008-12-17T16:54:29.763 に答える