0

私は .net メンバーシップを使用していますが、私が働いているものはすべてカスタマイズしたいと考えています。

私がやりたいことは次のとおりです。

  1. カスタム フィールドを使用してカスタム データ テーブル [Users] を作成する
  2. 現在のデータを新しいテーブルにインポートする
  3. [ユーザー] に必要なものすべてについてカスタム クラスと関数を作成する

.netメンバーシップがどのように機能するかはわかりませんが、使用すると暗号化されたCookieが送信される可能性があります

var user = Membership.GetUser();

.Net はユーザー Cookie を復号化し、どのユーザーであるかを認識します。

これは、.net がユーザー AUTH Cookie を作成する方法のスクリーンショットですhttp://prntscr.com/97043

ただし、ユーザーがログアウトしてログインするたびに、この値は異なります。

だから私が知りたいのは:

  1. 100% カスタム Web サイトを作成したいとします。カスタム ログインを作成するにはどうすればよいですか?
  2. カスタム メンバーシップを利用する際のセキュリティ上の問題をすべて教えていただけますか?
4

2 に答える 2

1

これは必要ありません。メンバーシップまたは認証に関連するものを変更する必要なく、独自の users テーブルを作成できます。users テーブルに AspNetUserID または類似のタイプの uniqueidentifier (a guid) という列があることを確認してください。このテーブルに MembershipUser から ProviderUserKey を配置し、Membership から ProviderUserKey を取得するだけで、Users テーブル内の任意のユーザーを検索します。

たとえば、次のようにします。

var userid = Membership.GetUser().ProviderUserKey;

// lookup your record in users based on userid above
于 2012-05-13T16:25:36.793 に答える
0

カスタム バックエンドの実装は難しくありません。MembershipProvider必要に応じて users テーブルからデータを格納および取得するカスタムを実装するだけです。MSDNを参照してください。また、SqlMembershipProviderを完全に書き直す必要はありません。サブクラス化して、探している機能を追加できます。

バックエンドでゼロから始めたい場合は、次の点に注意してください。

  • パスワードを平文でどこにも保存しないでください。それらをハッシュします。
  • パスワードをソルトする
  • パスワードリセットのログと監視

また、SqlMembershipProviderを完全に書き直す必要はありません。それをサブクラス化し、探している機能を追加できます。遭遇する可能性のある問題のほとんどは、デフォルトの実装でカバーされます。おそらく、データ アクセス呼び出しまたはストアド プロシージャをわずかに変更して、テーブル構造にマップするだけで済みます。SqlRoleProviderをサブクラス化して、サイトに役割ベースの承認を提供することもできます。

フロントエンド コンポーネントに関しては、フォーム認証のしくみについても MSDN で説明されていますが、個人的には、独自の Cookie スキームを台無しにするつもりはありません。asp.net の Oauth のような大規模なカスタム実装でさえ、依然としてフォームを使用しています。http://msdn.microsoft.com/en-us/library/system.web.security.sqlroleprovider.aspxを確認してください

于 2012-05-13T15:40:31.913 に答える