2

私のお気に入りのプロジェクトでは、次の要件を持つユーザー システムが必要です。

  • 永続化モデルとしてDb4oと連携する必要があります
  • DI を ( Turbineを使用して) 使用して、必要な依存関係をユーザー モデルに提供したい
  • asp.net-mvc に簡単にプラグインできる必要があります
  • 手間をかけずにテストできる必要があります
  • SOと同じように匿名ユーザーをサポートする必要があります
  • 認証と承認を分離したい (最初のものは 2 番目のものなしで存続できます)
  • 安全である必要があります

ここで機能の前にいくつかのテクノロジーを入れていることは承知していますが、これはペット プロジェクトであり、いくつかの新しいことを学びたいので、それらを要件として含めることは合理的だと思います。

自分自身を転がしている途中で、おそらくNIH症候群に苦しんでいることに気づきました.
私は、asp.net の既存のユーザー フレームワークが不必要に複雑であることがあまり好きではないので、実際には、セキュリティに関してより複雑なものがほとんどであり、現在私に疑問を投げかけています。続けて自分自身を転がすことは防御可能でしょうか?そうでない場合、既存の IPrinciple ベースのフレームワークで上記のすべての要件を満たすにはどうすればよいでしょうか?

4

4 に答える 4

5

あなたがやりたいことは、独自のカスタム .NET メンバーシップ プロバイダーを展開することのように思えます。

コントローラー アクションで組み込みの ASP.NET Authentication /Authorization 属性を使用できるようにすると同時にプロバイダー内の実装を完全に制御できるようにします (これにより、上記の要件を満たすようにコーディングできます)。

MSDN から直接...

メンバーシップ プロバイダーの実装

于 2009-12-07T14:09:12.413 に答える
1

先に進んで独自のカスタム ソリューションを作成すると、それがどれほど難しいか、どのような機能が必要かがよくわかります。これは、将来のプロジェクトのために既製のソリューションを評価するのに役立ちます。

OTOH、既にすぐに利用できる機能の開発に時間を費やすということは、その時間をプロジェクトの主要な機能に費やすことはないということです。認証と承認がプロジェクトの主要なコンポーネントでない限り、別の分野に時間を費やして知識を広げることを検討してください。

于 2009-12-07T14:07:50.230 に答える
1

私も ASP.net MVC と db4o を使用してペット プロジェクトに取り組んでおり、同じことをしたので、少なくともそのルートをたどるのはあなただけではありません :)。私が永続層として db4o をいじり始める最大の理由の 1 つは、特にフィールド レベルでの承認 (つまり、人物 A のファースト ネームは表示できますが、人物 B のファースト ネームは表示できません) は、複雑な SQL ステートメントと貧血ドメイン モデルに強制されます。

db4o と Solr の両方のインデックスに永続化 (および同期化) する必要がある複雑な承認のニーズがあったため、独自のロールアウトに取り組み始めましたが、それが私のペット プロジェクトの重要な機能の 1 つであることを前もって知っていたからです。 100%コントロールしたかった。

今でも、認証には .Net メンバーシップ プロバイダーを使用できますが、(もっぱら) オブジェクトの承認には使用しません。

于 2009-12-07T14:30:41.273 に答える
1

あなたの考えの薄い部分がどこにあるかを認識していると思います: つまり、あなたがやっていることの動機として、あなたがやっていることを行う方法を、NIH (面白い: 私はこれまで見たことがありませんでした. ) 問題。

それらはさておき、プロバイダーは潜在的に再利用できるものであり、将来の作業の一部を簡素化する可能性があります. また、問題についてさらに理解を深めるのにも役立ちます。ASP.NET フレームワークを理解している限り、必要に応じてそれを使用することもできます (また、ツールを使用していない場合に何をしているのかわからないほど専門化されていません)。あなたはすでにあなたの防御を作り上げたと信じています。

DOK が述べたように、他の機能が何であれ、手元にあるより大きなタスクを避けるために、ここで自分自身をロールバックしないことに注意してください。これが邪魔にならないようにしてください。アプリケーションが本当に必要とするものでなければなりません。そうでない場合は、代わりにソフトウェアのコア ミッションに集中することをお勧めします。

于 2009-12-07T14:20:29.157 に答える