ASP.NET MVC のホット タオル SPA テンプレートを新しいプロジェクトとして検討していますが、ユーザー固有のデータをフィルター処理して保護する方法がわかりません。私たちのプロジェクトは、EntityFramework をベースにした ASP.NET MVC です。
それぞれが 1 つ以上の場所を持つさまざまな会社の販売情報を保存できるサービスを考えてみましょう。
- 店長がログインすると、自分の店の売上のみが表示されるはずです。
- 地域マネージャーがログインすると、自分の地域の店舗のみが表示されます。
- CEO がログインすると、すべての店舗が表示されるはずです。
このビジネス ロジックは、クライアント側の Javascript 内で処理できますが、ブラウザの開発者ツールや Fiddler などを使用すると簡単にバイパスできそうです。HTTP 要求文字列を操作することで (OData ベースであるため)、社内の他のストアのデータを表示でき、他の会社のストアも表示される可能性があります。
クライアント側で言うといいでしょう:
var query1a = EntityQuery.from("Customers")
.where("CompanyName", "startsWith", "A");
また、データベース全体ではなく、現在のユーザーに対してのみ結果を返します。
サーバーでこれを達成する方法に関する提案/例/チュートリアルはありますか?
この「フィルター」ロジックをセッション変数に格納することは理にかなっていますか? したがって、上記のクエリの場合:
(効果のあるもの)
[HttpGet]
public IQueryable<Customer> Customers() {
return _contextProvider.Context.Customers.Where(x=> x.CompanyID == Session['CompanyID'];
}