2011-01-22 14 views
3

私は現在、リポジトリ、uow、services、ioc、ef4およびmvc3という新しいテクノロジおよびパターンを実行するために、n層Webアプリケーションを構築しています。n層Webアプリケーション全体で.NETメンバーシップ・プロバイダを使用

多くの髪を引っ張った後、リポジトリを使用して自分のエンティティを自分のサービスレイヤーで保存しています。

私はサービスレイヤーで必要なメソッドを定義し始めています。認証の実装を開始するのがいいと思っています。通常、私は自分の認証コードをロールバックしますが、メンバーシッププロバイダを試すように友人から言われました。

明らかに私はmvc3ウェブアプリケーション内でこれを使用するつもりですが、これを私のサービス層内でも使用できるかどうか疑問に思っていますか?誰かが私の記事やブログの投稿に私を向けることができますか?

NB。しかし、私が明らかにしている場合は謝罪します。私は私のサービス層を指しているときにWCFを意味するわけではないことを明確にしたいと思います。これらはサービス層のパターンを尊重する私のクラスです - http://martinfowler.com/eaaCatalog/serviceLayer.html。私は、このサービス層を後でWCFサービスを通して公開したいと思うかもしれません。

私は今何時間もグーグルで行ってきましたが、何も出てこなかった!

本当にありがとうございます。

答えて

1

これはScott Mitchellの記事18 part seriesです。

これは、asp.netの認証、認可、およびメンバシッププロバイダに関するすべての機能の詳細です。私は同じ著者からこれに関するよりよい情報源を発見したことはありませんでした。

あなたは、任意の特定の変更なしにこのことができます

希望をすでにEF4で今日そうであるように、リポジトリパターンの使用throgh実装を非表示にすることができます!

+0

そのリンクをありがとうございますが、あなたは自分のリポジトリ内で認証を実装できると言います。たぶん私は間違っていますが、これは認証が存在する正しい場所のようには思えません.SOCの観点から考えると、リポジトリはエンティティのCRUD操作のみを担当する必要があります。認証に最も適した場所はサービス層(アプリケーションロジックが存在する場所)で、現在のユーザーとそのアクセス許可をMVC Webアプリケーションからサービス層に渡す方法について考えています。私はそれが理にかなったことを願う私は今、リンクを読んで始めます、ありがとう! – jameskind

+0

はい、意味があります。しかし、あなたはいつも 'Membership.GetUser(HttpContext.Current.User.Identity.Name)'を使って現在のアイデンティティ名に基づいてユーザを得ることができます。 ;) – Lorenzo

1

ユーザー名、リモートIPアドレスなどを保持する "SecurityContext"クラスを作成する方法があります。次に、WCFサービスのプロキシクラスとして機能するAgentクラスを作成します。 Agentクラスでは、静的クラスを使用してセキュリティコンテキストを作成できます。セキュリティを必要とするすべてのサービスメソッドについて、このSecurityContextを他の層に渡すことができます。こうすることで、ドメイン/ビジネスロジック層のフロントエンドと監査などで認証を行うのに十分な柔軟性が得られます。

関連する問題