2017-03-21 26 views
0

私は古典的なレイヤードサーバアプリケーションを持っています。レイヤーは以下のとおりです。ユーザー認証の検証はどこに行う必要がありますか?

  • サービス層(ファサードパターンとして働く)
  • ロジック層
  • データアクセス層
  • DB層

私は、サービス上の例外管理およびロギングを行います主に層。

ユーザーは、データベースまたは他のWebサービスに対して認証ロジックによってチェックされた信任状オブジェクトを提供します。 権限は、ユーザーがメンバーであるグループによって管理され、基本的に権利はグループに割り当てられたブール値を持つIDに過ぎません。

私の認証と認可チェックをサービスレイヤーまたはロジックレイヤーに置くべきですか?

答えて

0

ウェブアプリケーションの一般的なプラクティス(私はあなたのウェブアプリケーションであると仮定しています)は、ユーザーが特定のサービスへのアクセス権を持たないかのようにAPIレイヤーで承認チェックが行われます。そこ。 Junitを使用してサービス層をテストしているときに、セキュリティコンテキストを実装するロジックを記述する必要はありません。ある程度、権限チェックはビジネスロジックの一部であり、コントローラにはビジネスロジックが混乱するべきではないことに同意しますが、Springのようなフレームワークではアノテーションだけを置くのは簡単なので、コードの可読性は損なわれません。

しかし、多くの人はセキュリティを可能な限り低いレイヤーにプッシュするという意見があります。

関連する問題