2009-03-31 9 views
19

.netメンバーシップにはどのような選択肢もありますか?.Netメンバーシップの代わり

非常に限定的です。

  • 簡単に変更できます。ユーザー名は、簡単です。新しいユーザーを作成してフィールドをコピーする必要がありますが、プライマリキーを失うか、自分でユーザーテーブルを直接編集する必要があります。

  • 追加のプロファイルフィールドは、1つのブロブとしてまとめて格納されます。

答えて

13

ASP.Netのメンバシップはプロバイダモデルを使用します。つまり、provider contractに従う限り、あなたは自分のメンバーシッププロバイダを完全に実装することができ、既存のプロバイダを継承して拡張することもできます。

さらに、自分で新しいものを作成しようとするのではなく、既存の選択肢について質問するためのものです。

0

ユーザー名を変更する限り、CreateNewUser()メソッドを使用して現在のユーザーに基づいて適切なフィールドを入力し、現在のユーザーを削除することで簡単に達成できます。

プロファイルフィールドは、.NETメンバーシッププロバイダモデルの一部ではなく、プロファイルプロバイダの一部です。これは非常に議論されている話題であり、ほとんどのプロダクションマシンで正しい方法は、このようなより良いプロファイルプロバイダソリューションをドロップインすることです(Table Profile Providerなど)。これは、メモリホッピングブロブではなく、期待通りにプロファイルフィールドを格納します。また、独自のプロファイルプロバイダを簡単にロールすることもできます。instructions hereをチェックしてください。

確かに.NETメンバーシップの選択肢がありますが、ほとんどがバグであるか、小さなフィーチャセットを持っています。それは2ヶ月間、1つ上に開発して、それが必要なすべての機能をサポートしないことを実感します。 .NETメンバーシップは実証済みのソリューションであり、そのために頻繁に使用されています。

+2

新しいユーザーを作成した場合、それはまた、右、それのために新しいIDが生成されますか?ユーザーが既に他のテーブルによって参照されている場合は不都合です。 – XOR

+0

いいえ、あなたのメソッドを修正してユーザ名を "変更"するのは簡単です。 – JoshJordan

0

プロフィールについては、alternatives out thereの2つがあります。これらの2つは、テーブルを使用するか、ストアドプロシージャを呼び出すことができます。もちろん、自分で実装することもできます。私は個人的にプロファイルプロバイダーを使用するのに飽きてしまい、自分のコード内のプロファイルを扱うのが制御しやすく、含まれていることが分かりました。

その他の問題については、独自のプロバイダを実装することもできます。マイクロソフトはソースコードをSQLプロバイダにリリースしたので、出発点を与えることができます。

+0

プロファイルプロバイダモデルを使用しなかった理由を説明してください。 – kseen

2

ASP.NETメンバーシップモデルはプロバイダの周りに構築されているため、いくつかの選択肢があります。

デフォルトでは、ユーザーはGUIDであり、データベースのプライマリキーであるため、必要に応じてユーザー名を変更するための何かを書くことができるはずです。

プロファイルの面では、はい、デフォルトのBLOBはかなり面倒です。プロファイルをテーブルにマップするSQL Table Profile Providerを見るか、またはかなり早くroll your ownを見ることができます。

+0

@Dan - UserIDによって、私はデータベーステーブルaspnet_Membershipとaspnet_usersのPKを参照していましたが、実際にはUserIdと呼ばれています –

8

ここで私の選択肢を列挙します。私は自分自身の認証ライブラリをロールバックしました。公開されるほど素晴らしいと思います...だから私はしました。それはあなたのやり方と全体的にとどまるように設計されていますが、それはかなりミニマルです。私は箱入りのユーザーコントロールをたくさん提供していませんが、それらの組み込みユーザーコントロールを見たことのあるほとんどのWebサイトでは決して使用されていません。だから、より柔軟なユーザーコントロールを作成するのではなく、自分のログインコントロールなどを簡単に作成することを決めました。

このプロジェクトは、高速で安全で簡潔な認証、つまりFSCAuthと呼ばれています。それはBSDライセンスです。 BinpressまたはBitbucket

柔軟な「UserStore」モデル(フォームのプロバイダに相当)を使用すれば、必要に応じてデータベースを作成できます。プレーンテキストファイル(XML、MongoDBSql Serverなど)をサポートしています。

  • ステートレス認証システムを:

    は、ここで私はそれが特にフォーム認証の上に優れ考えるもののリストです。データベースまたはメモリのいずれかでユーザーセッションを追跡する必要はありません。これにより、複数のサーバーにスケールアップするのが簡単になります(ある場合)認証コードを変更する必要はほとんどありません

  • ユーザーごとに一意のIDとして何かを使用します。そうです、それ以上のGUIDはありません!文字列に収まるものはすべて公正なゲームです
  • HTTP基本認証は焼き付けられます。必要なページだけで基本認証を有効にすることができます。また、一般的なCookieベースのものと同じ呼び出しを行うことができます認証
  • 安全性に問題はありません。どのように動作するのか、実際に認証を行うためにできるだけコア・コードをエンド・ユーザーに任せているので、非常に安全です。私は、クッキー、HTTP基本認証、およびすべてのハッシュを処理します。 FSCAuthにデータベースを入れるだけです。
  • ハッシュのBCryptサポートは簡単です。 How to do it.。フォーム認証では、それは私がそれを好き:)もちろん

それも欠けている、と私は静的ファイルの認証

  • を欠いているいくつかのことを含めるよ公平にalmost not possible
  • ですIIS 6は使用できません(まだ)
  • (まだ)ブルートフォース防止はありません。これは、同じ人物がログインページを2秒間に200回ヒットしようとしていないことを確認する必要があることを意味します。
  • (今までに追加する予定はないとの)これは、ASP.Net
  • に組み込まれていない
  • ませんWindowsまたはPassport認証
関連する問題