web-dev-qa-db-ja.com

.Netカスタムメンバーシッププロバイダーを使用/作成することの欠点は何ですか?

最近、私はSOに次の質問を投稿しました: https://stackoverflow.com/questions/7197337/using-asp-net-membership-provider-with-an-existing-user-database

お気づきかもしれませんが、「カスタムメンバーシッププロバイダー」を作成または実装する方法が適切だと述べた私の質問に答えてしまいました。

文字通り、数分後、私はこの質問に遭遇しました: https://stackoverflow.com/questions/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407

.Netメンバーシッププロバイダーは「多くのレベルでひどい」と答えてコメントを返そうとしています。認めますが、メンバーシッププロバイダーを使用するのは今回が初めてですが、見た目は滑らかに見えました。

「ひどい」という主張を裏付けるものは何も見たことがありません。そのため、「ひどい」ものを実装する前に、コミュニティからフィードバックを得ることを望んでいました。

12
SLoret

この質問は古いですが、人気があるためバッジを取得しています。更新された回答を提供する価値があると思います。

マイクロソフトの「シンプルな」メンバーシッププロバイダーは、私の控えめな意見では、ようやくそれを正しく理解しました。新しいアプリケーションを作成したり、新しいアプリケーションでレガシーデータベースに接続したりする場合。単純なメンバーシッププロバイダーを使用します。 WAY EASIERおよびCLEANERを実装する。いくつかのテーブルをインストールし、プロバイダーにユーザーのリストを指定すれば、基本的にはこれで完了です。

このリンクをクリックすると、開始するか、ググってみます: http://www.mattjcowan.com/funcoding/2012/11/10/simplemembershipprovider-in-mvc4-for-mysql-Oracle-and-more-with -llblgen /

1
SLoret

それらは、多くの人がドキュメントをすばやく読むことを考えるほど柔軟ではありませんが、その場所はあります。

ユーザートークンを制御する必要がなく、カスタム/拡張ユーザーデータまたはメンバーシップセットを構築する必要があるか、既存の/異なるソースからデータをプルする必要がある場合。

それ以上の変更をしたい場合は、多くの場合、認証プロバイダーの1つを実行するhttpモジュールを置き換えるほうがよいでしょう。そうすれば、すべての制御を取得できます。私がプロバイダーで物事を壊すことに遭遇したほとんどの人々は、このレベルでの状況に間違った選択をしました。

どちらの方法でも、ほとんどのasp.netベースのユーザー関数を引き続き使用できるように、適切に入力されたcontext.userを取得します。

1
Bill

したがって、「ひどい」がここでの最良の言葉であるかどうかはわかりません。ただし、これには制限があり、メンバーシッププロバイダーの設計方法がニーズに合わなくなるとすぐに、大量のグルーコードが作成されます。メンバーシッププロバイダーをそのまま使用できるのであれば、私はそれに行くと思います。あなたがカスタムのものを書き始めるとすぐに私はとにかくメンバーシップのものを使って質問します。

私の経験では、会員プロバイダーはあなたを買います...

  • MVCアプリに既に組み込まれているサインアップ
  • アカウント編集
  • パスワードを忘れた場合は簡単に接続できます
  • ユーザーメソッドの検証

他に何か足りないものがあると確信していますが、それらは大きなものだと思います。カスタムパスワード管理、2要素認証が必要な場合、既存のデータモデルまたは他のすべてのホストで作業するために失います。あなたが何をしているのかわかっている場合、メンバーシップの提供によりすでにあなたのために書かれたコードは複製するのに数日かかるでしょう。

1
Travis

それはあなたが望んでいることをしません。一見、あなたはそれがあなたのすべてのニーズといくつかのニーズに対応していることに気付くかもしれませんが、新しい要件が浮上します。 これで、「本当に」これがどのように機能するかを学習する必要があります。事前に構築されたものをすべて持つことの利点は、誤ったセキュリティの感覚にあったため、減少します。

@Travisは既存のデータモデルの使用について言及しましたが、データベースの選択も制限になる可能性があります:Oracle?

FacebookやGoogleなどのサードパーティ検証システムで動作するかどうかはわかりません。

1
JeffO