19

.net メンバーシップに代わるものはありますか?

私はそれが非常に制限的だと思います。

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

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

4

5 に答える 5

13

ASP.Net メンバーシップはプロバイダー モデルを使用します。つまり、プロバイダー コントラクトに従う限り、完全に自由に独自のメンバーシップ プロバイダーを実装したり、既存のプロバイダーを継承して拡張したりできます。

ただし、新しいものを自分で構築しようとするのではなく、既存の代替案について尋ねるためのプラス 1 つです。

于 2009-03-31T19:24:04.440 に答える
8

先に進み、ここに私の代替案をリストします。私は独自の認証ライブラリを作成しましたが、公開するには十分素晴らしいと思います...だから私はそうしました。邪魔にならないように設計されており、全体的にかなりミニマルです。すぐに使用できるユーザー コントロールはあまり提供していませんが、ほとんどの Web サイトでは、組み込みのユーザー コントロールが使用されていません。そのため、さらに柔軟なユーザー コントロールを作成しようとする代わりに、独自のログイン コントロールなどを作成するのを非常に簡単にすることにしました。

このプロジェクトは、Fast, Secure, and Concise Authentication (略して FSCAuth) と呼ばれています。BSDライセンスです。BinpressまたはBitbucketでダウンロードできます。

柔軟な「ユーザー ストア」モデル (フォームのプロバイダーに相当するもの) により、必要に応じてデータベースを作成できます。プレーン テキスト ファイル、XML、MongoDBSql Server、およびその間のあらゆるファイルをサポートできます。

以下は、フォーム認証よりも優れていると私が思う点のリストです。

  • ステートレス認証システム。データベースまたはメモリでユーザー セッションを追跡する必要はありません。これにより、認証コードに (もしあれば) 変更をほとんど必要とせずに、複数のサーバーにスケールアップすることが簡単になります。
  • 各ユーザーの一意の ID として何でも使用します。そうです、GUID はもう必要ありません。文字列に収まるものは何でも公正なゲームです
  • HTTP 基本認証が組み込まれています。必要なページだけで (またはグローバルに) 基本認証を有効にすることができ、通常の Cookie ベースの認証を使用しているかのように同じ呼び出しを行うことができます。
  • 不安定になりにくい。その仕組みと、実際に認証を行うためにエンド ユーザーに残すコア コードをできる限り少なくしたため、非常に安全であり、実際に壊そうとしない限り、そのままの状態を維持できます。Cookie、HTTP 基本認証、およびすべてのハッシュを処理します。FSCAuth にそれを入れるためのデータベースを与えるだけです。
  • BCrypt によるハッシュのサポートは簡単です。どうやってするの。. フォーム認証ではほとんど不可能
  • それはいいですね :)

もちろん足りないものもあるし、公平を期すために、いくつかの欠けているものを含めます

  • IIS 6 での静的ファイルの認証は (まだ) 不可能です
  • ブルートフォース防止は(まだ)ありません。これは、同じ人物が 2 秒間に 200 回ログイン ページにアクセスしようとしていないことを確認する必要があることを意味します。
  • ASP.Net には組み込まれていません。
  • Windows または Passport 認証なし (追加する予定はありません)
于 2011-07-05T21:07:51.543 に答える
2

ASP.NET メンバーシップ モデルはプロバイダーを中心に構築されているため、多数の代替手段を利用できます。

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

プロファイルに関しては、はい、デフォルトのブロブはかなり面倒です. プロファイルをテーブルにマップするSQL テーブル プロファイル プロバイダーを調べるか、独自の.

于 2009-03-31T19:27:14.917 に答える
0

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

プロファイル フィールドは、.NET メンバーシップ プロバイダー モデルの一部ではなく、プロファイル プロバイダーの一部です。これは非常に議論の多いトピックであり、ほとんどの実稼働マシンの正しい方法は、このTable Profile Providerなどのより優れたプロファイル プロバイダー ソリューションをドロップインすることです。これは、メモリとしてではなく、期待どおりにプロファイル フィールドを格納します-ホギングブロブ。または、独自のプロファイル プロバイダーを簡単に展開することもできます。こちらの手順を確認してください。

確かに .NET メンバーシップの代替手段はありますが、ほとんどはバグがあるか、機能セットが小さいです。1 つの上で 2 か月間開発した後、必要なすべての機能がサポートされていないことに気付くのは本当に最悪です。.NET メンバーシップは実績のあるソリューションであり、それが頻繁に使用される理由です。

于 2009-03-31T19:25:25.750 に答える
0

プロファイルに関しては、いくつかの選択肢があります。これら 2 つは、テーブルを使用するか、ストアド プロシージャを呼び出すことができます。もちろん、独自に実装することもできます。私は個人的にプロファイル プロバイダーの使用にうんざりしており、コード内でプロファイルを処理する方が制御と包含が容易であることに気付きました。

他の問題については、独自のプロバイダーを実装することもできます。Microsoft はソース コードを SQL プロバイダーにリリースしたので、開始点を提供できます。

于 2009-03-31T19:26:46.090 に答える