2009-07-29 21 views
14

MVCでこれを行う必要があるかどうかはわかりませんが、メンバーシップを使用する際にASP.NETユーザーアカウントに追加情報を追加するための推奨方法は何か不思議ですプロバイダ?また、この使用法を他のエンティティと関連付ける方法もあります。追加情報をASP.NET MVCメンバーシップに関連付ける

通常、私はプロファイルを気にせず、単にUSERIDを参照するテーブルに余分な情報を追加することを好みます。 ASP.NET MVCのアプローチではこれが良いか悪いか、あるいは許容できるのでしょうか?

答えて

10

これは良い質問ですが、私は苦労しました。私は3つの基本的なアプローチがあると思います。

  1. プロファイルプロバイダを使用する - これは、ユーザーのテーブルを生成するようなことを行うためにプロパティを追加することが容易になりますが、面倒、あなたはフィルタ/検索を適用する必要がある場合は特に。 APIはそれをカットしません。

  2. 新しいテーブルを追加(または既存のテーブルを拡張)してから、このテーブルに追加します。カスタムデータを取得する独自のメソッドを作成する必要があります。

  3. MembershipProviderクラスを拡張する独自のメンバーシッププロバイダを作成します。私の最後のプロジェクトのために

私は後者のアプローチを使用 - 私は、ユーザーの作成、認証やパスワードを変更するために必要な最低限必要なものを実装する非常にquck SQLプロバイダを書きました。仮想メソッドの残りの部分については、私はちょうどNotImplementedExceptionを投げた。

私は必要な余分なプロパティを追加し、それを作成して標準MembershipUserを渡すことでインスタンス化できる新しいクラスを追加しました。あなたはほとんどの事のための標準たMembershipUserを使用することができますが、あなたは、現在のユーザーの詳細を取得する必要がある場合は、このようなものを行う

public static CustomMember GetMember(MembershipUser user) 
{ 
    // Get your custom member 
} 

その方法:このような何か

MembershipUser user = Membership.GetUser(); 
CustomMember member = CustomMember.GetMember(user); 

私は思いますしかし、他の人々のアプローチが何であるかを知ることに興味がある。

+0

返信いただきありがとうございます。私はあなたのアプローチが好きです。私はまた、他人が何を考えているのか興味があります。 – Dkong

+0

Membership.GetUser()がデフォルトのasp_usersテーブルで動作するのに対して、CustomMember.GetMember()はいくつかのカスタムテーブルからデータを引き出すのは確かです。 – greenimpala

+0

ねえ、アドバイスありがとう。しかし、このアプローチの選択に関する記事やベストプラクティスはありますか?私はそのようなリンクに感謝します。 –

1

MVCを使用しているという事実は、メンバーシップと「ユーザーデータ」を扱う方法に大きな影響を与えてはいけません。

私は、通常、自分のメンバーシッププロバイダと 'プロファイル'スキーマをロールして既存のユーザーテーブルにリンクすることを好み、ASP.NETプロファイルと、実際にはデフォルトのASP.NETメンバーシップを避けます。

お客様のメンバーシッププロバイダに関する詳細情報に興味がある場合は、コメントを記入してください。

0

私は、このトピックに関する多くのフィードバックと人々の行動を見たいと思っています。私は現在asp.net mvcアプリケーションで標準asp.netメンバシップ/ロールプロバイダシステムを使用しており、それほど好きではありません。

私のアプローチは、aspnet_usersテーブルを変更して余分な列を追加することでした。 CompanyId、StreetAddressなど

私は標準プロファイルでウェブサイトをどのように使用するかに関するユーザープロファイル設定を保存しました。どのテーマを使用するか、ページングリストに表示されるレコード数などが含まれます。

ほとんどの人が知っているように、プロファイルの情報を取得するのは苦痛で、私が大規模なシステムで読んでいるものは、シリアル化のためにパフォーマンスのボトルネックになる可能性があります。

私のアプリケーションのスキーマに合わせて、カスタムSQLプロバイダを実装し、必要な場合には、asp.net mvcでいくつかの追加のセキュリティ属性を書き込んで見て、テーブルにローリングする傾向があります。

関連する問題