ユーザーは1つ以上の部門に割り当てられます。Web Api、サービス層、DB内のユーザーアクセスをチェックするためのより良いアプローチ
ユーザーには、1つ以上のロール(例:)が割り当てられています。ロールを読むと、自分のタスクのみを表示できます。 チームメンバーロールは他のメンバーを表示および編集できます。担当の部門内のタスクが割り当てられています。 ロールのあるユーザ管理者は、システム内のすべてのタスクを表示および編集できます。
許可されていないアクセスの防止とパフォーマンス上の理由から、現在ログインしているユーザーIDをデータベースに完全に渡して、アクセス権のあるレコードのみを取得できるようにします。
当社のシステム設計は、次のとおりです。
ウェブAPI - >ビジネス/サービス層 - >リポジトリ - > DB
現在、我々はそれぞれの方法、それにサービス層へのWeb APIからユーザIDを渡していますユーザーがロールを持っているかどうかを確認チームメンバー(アクセス可能な部門内の他のユーザーのタスクを表示/編集することができます) と彼がアクセスできるすべての部署を取得し、さらにリポジトリに渡します。
各メソッドにユーザーIDを渡すことを避けるための方策はありますか? 上記のデザインで、ユーザーのアクセスをチェックするのに最適な場所は何ですか?
ユーザーIDパラメータを持たないメソッドで、別のアプリケーションで同じクラスを使用できるようにするのが理想的です。
アイデア?
userIdとその他の関連情報をクッキーに渡してから、userIdやその他の情報の確認を処理する基本サービスを持つことができます。また、コールが許可されているかどうかを確認するためのクリーンな方法としてアトリビュートを使用することもできます。関連するサービスメソッドの上の例として[ReadOwnRoleRequired]。コード例を与えることができないので、今のところコメントとして残しておきます。 – NPhillips
「チームメンバーの役割は、他のメンバーが割り当てられている部門内の他のタスクを表示および編集できる」と述べました。それから、関連するレコードを取得するには、ユーザーIDを渡す必要があると思います!それは正しい? –
@NPhillips:ありがとう。しかし、ユーザーTeamMemberは、自分の部門の他のユーザーのタスクにアクセスできます。役割だけでなく、現在のユーザーがどの部門にアクセスしているかをチェックして、これらの部門のみを照会するためにDBに渡す必要があります。 – Iffi