2011-07-05 20 views
1

新しいASP.Net MVC 3アプリケーションを開始しています。メンバーシッププロバイダを使用することを希望しています。ASP.Netメンバシップ追加フィールド

私が持っている問題は、私のアプリケーションは、さまざまな組織で使用することができるということである、示す情報は、ユーザーがのために働いている組織にのみ適用されることが重要です。

なし非常に簡単アプローチは、誰もがユニークで、それぞれの組織に関連付けることができるように、すべてのユーザーが自分のユーザ名として自分の電子メールアドレスを使用主張するだろう。問題は、一部のユーザーは電子メールアドレスを持たないため、一意の名前を保証する信頼できる方法がなく、人々が既に異なる組織によって使用されているユーザー名を知りたくないということです。理想的には

(ユーザ名のみがアプリケーション全体、組織に固有のものではないはずです)、私は別で、次にユーザー名、ユーザーが1つのフィールドに自分の組織名を入力したい(し、パスワード!)

だから我々は.....ある組織から

Organization Company1 
Username  Jane 
Password  ******** 

をジェーンログインを持つことができ、その後もジェーンと呼ばれる他の誰かが..異なる組織から

Organization Company2 
Username  Jane 
Password  ******** 
ログインでき

私の質問は、メンバーシップシステムをこの余分なフィールドのために変更する最良の方法は何ですか?

+0

これは、私の意見では、デフォルトメンバーシッププロバイダのための過剰です。企業全体で同じユーザー名を使用できるようにする必要があるため、既定のプロバイダの外部で動作させることは非常に多くの作業です。あなたが本質的にここで紹介しているのは、(CompanyID、UserID)を収めているユーザーの結合IDです。これは、場所(例:アプリケーション)全体を複雑にします – mare

答えて

2

メンバーシップで使用されるプロバイダーパターンは、拡張できるように設計されています。既定のプロバイダーと既定のメンバーシップ使用クラスから継承して、必要なフィールドを追加することができます。これにより、最初からプロバイダを書く必要がなくなります。 @mareが指摘しているように、潜在的な落とし穴があります。

私は、おそらく組織のために要求されますログインフォームを持つことによって、これらを克服するためのユーザー名&パスワードが、舞台裏での内部ユーザ名としてその組織&ユーザ名&を併用でしょう。

+0

はい私はそれもやって、組織とユーザー名を1つの完全なユーザー名(ID)に結合します。または、会社が電子メールを提供しない場合は、自分自身を紹介してください。 "[email protected]"のように、メールシステムなどに存在していなければならないというわけではありません。 – mare

+0

+1を書く前に単純な(ユーザー名/組織の組み合わせ)独自のカスタムメンバーシッププロバイダ(@Bumble Beeで提案されているように) –

+0

@hector:彼は確かにカスタムプロバイダーになります。彼の要求が変わらない限り。 – mare

2

ビルトイン(デフォルトASP.NET)メンバシッププロバイダは、組織/会社/事務所や部署の概念を提供していません。 aspnet_usersテーブルへの外部キーを持つユーザーがデータベースに独自のテーブルを作成して、その追加情報を格納できるようになります(既定のaspnet_usersテーブルを変更しないと、現在のデフォルトプロバイダーと互換性がない可能性があります)または将来のもの)。その後、デフォルトの機能にデフォルトのプロバイダを使用し、拡張機能をサポートするためにServiceクラスを作成する必要があります。私は知っている、私はそれをやった。それは複雑で汚れて、時間がかかりますが、それは完全に実行可能です。

ほとんどの場合、独自のプロバイダを作成することになります。これは、企業のユーザーをサポートする要件から始まる可能性があります。デフォルトのプロバイダをサポートするように変更することは、必要ではないと考えた場合に備えてください。会社内の一意性に関する要件は、実装する必要のある別のものです。

+0

+1すべてのあなたの有用なコメントをありがとう。 – Mitch

関連する問題