2009-08-02 7 views
11

私はどのようにasp.netの会員資格を拡張するのですか?Asp.netのメンバーシップを拡張する方法は?

ユーザがログインすると、ユーザ名とパスワードを確認したいと思います。もちろん、標準asp.netのメンバーシップはこれを行います(これはValidateUser()です)。

「施設」という別のフィールドも確認したいと思います。ユーザーがこのボックスに何かを入力した場合、「機関」、「ユーザー名」および「パスワード」がデータベース内のものと一致するかどうかを確認したい。

ユーザーが「機関」を空白のままにした場合、asp.netで提供されるデフォルトのValidateUser()メソッドを使用し、「userName」と「password」のみをチェックします。

私はValdiateUser()メソッドをオーバーロードできますか?あるいは、この新しいケースを扱うために私自身のものを書く必要がありますか?

この「機関」フィールドはどこにデータベースに保存しますか?私は "プロフィール"テーブルを推薦する人々について何か聞いたが、わからない。 ABC ユーザー名::A09410515 パスワード:1234567

機関:GHA ユーザー名:A09410515 パスワード:1234567

はまた、どのように私は3人の異なるユーザ

機関としてこれらを治療するためのメンバーシップを変更することができます

ユーザー名:A09410515 パスワード:1234567

データベースは、これらが3人のユニークユーザーであるべきであると考えるべきである。もちろん、自分のデータベースに既に同じ情報が格納されている場合もあります。

たとえば、

機関:ABC ユーザー名:A09410515 パスワード:1234567

と誰かがそれが重複した名前であることについてエラーをバック吐くだろう「ユーザー名」と「機関」のためにまったく同じ情報にサインアップしようとします。

答えて

15

はい、あなたはcreate a custom membership providerです。プロバイダはMembershipProviderを実装して、メンバーシップシステムと拡張データベーススキーマの間のインターフェイスの作成を完全に制御できます。 Writing A Custom Membership Provider for your ASP.NET 2.0 Web Siteは詳細な例です。

+0

こんにちは リンクありがとうございます。私はまだ少し混乱しています。私が追加するこれらの余分なフィールドはどこに保存しますか?私はそれをプロフィールに追加したり、何を追加したりするのですか? 私は私のasp.net dbと私のdbを併合することができるようにカスタムプロバイダを作っていますが、mssqlサーバを使用しています。 また、私はそれらのメソッドをオーバーライドしていることに気付きました。私はまだデフォルトのverifyメソッドを使いたいと思います。 2つのオーバーロードメソッドを作成します。 1つは私のカスタム検証と1つのメソッドを呼び出して、デフォルトの検証メソッドですか? – chobo2

2

これを行う怠け者の方法は、実際のユーザー名を作成するために機関とユーザー名を組み合わせることです。 ABC & A09410515、GHA & A09410515、および& A09410515:

したがって、あなたは、3つの異なるユーザ名を持っていると思います。ユーザーがユーザー名に&を使用することを許可しないでください。

次に、ユーザーを作成するかログインする前に、2つの文字列を組み合わせるだけです。

私は、単純なハック(例えば、ユーザ名を表示する(username.split(「&」を使用)[1])で固定することができない重大な問題を考えることはできませんが、JPの投稿は間違いなくありますそれを行う "正しい"方法。

ジェームズ

1

あなたは、機関として、さまざまなアプリケーション

ロドリゴに同じユーザー名を持つことになり、そのようにアプリケーション名を使用する場合があります。

関連する問題