2017-11-14 1 views
0

私はユーザーにアクセスするアプリケーションとそのアクセス許可の一部を持っています。それらは他のアプリケーションでも使用されているテーブルに格納されているため、他のアプリケーションに関連するものを変更するのは悲惨です。たとえば、「ユーザーXのアクセス許可が私のアプリケーション上でR/Wである」と言う場合、私はユーザーXの他のアプリケーションのアクセス権を消滅させたくありません。Entity Framework 6でアクセスするデータをフィルタリングします

このような方法でフィルタリングする方法はありますか?

擬似データ

  • 許可1:USERX、ReadRight、ApplicationAを
  • 許可2:UserY、WriteRight、ApplicationAを
  • 権限3:USERX、WriteRight、ApplicationBを
  • 許可4: UserX、ReadRight、ApplicationB

アプリケーションA、擬似コード

UserX.Permission = [ { WriteRight, ApplicationA }, { WriteRight, ApplicationA } ] 
Save UserX 

は、得られた擬似データ

  • 許可1: - :、USERX USERX、ReadRight、ApplicationAをクール、私は
  • その許可5を意味しましたWriteRight、ApplicationA - クール、私はそれを意味する
  • 許可2 :UserY、WriteRight、ApplicationA
  • 権限3:UserX、WriteRight、ApplicationB - おっと!私はそれを削除するつもりはありませんでした。
  • 権限4:UserX、ReadRight、ApplicationB - おっと!私はそれを削除するつもりはありませんでした。

注:アプリケーション/ユーザー/許可の業務性質は関係ありません

私は、ツリーの果実の数を設定した場合、それはまた、(ツリー/ファーマー/フルーツ可能性があり、かつそれは)それは農夫が唯一の5つの果物を持っているという意味ではありません、5を持っている

+0

明らかではありません。詳細を追加できますか?また、他のアプリやそのデータへのアクセス権を向上させることができます。 – cassandrad

+0

それも取得していません。あなたはEFに似た何かを提供できますか?たとえば、 'var app_A_Permissions = context.Permissions.FirstOrDefault(p => p.UserName ==" UserX "&& p.Application ==" ApplicationA ");' –

答えて

0

免責事項:私はこのライブラリを使用して、データをフィルタリングすることができますEntityFramework.DynamicFilters

の持ち主です特定のユーザーのために。

modelBuilder.Filter("NotesForCompany", (Note n, int orgID) => n.Person.OrganizationID==orgID, (MyContext ctx) => ctx.CurrentOrganizationID); 
modelBuilder.EnableFilter("UserOrg", (MyContext ctx) => !ctx.UserIsAdmin); 
関連する問題