私はデータベースとしてdotnet core + entityframeworkコア、IDサーバ、MS SQL Serverを構築しました(フロントエンドのAngular 2)。私はすでにロールでユーザー認証を実装しています。今、私はアプリケーションの異なる部分へのアクセスを制御するためにAuthorize属性を使用しています。ここでは、3つの異なる役割で使用可能なAPI関数の例があります。エンティティへのユーザーの読み取り/書き込みアクセスを制御する方法は?
[Authorize(Roles = "ProductAdministrator, WebEditor, Manager")]
public IActionResult Get()
{
IList<Product> products = _service.GetProducts();
return Ok(products);
}
あなたのユーザーにこれらの役割のいずれかを持っていない場合は、あなたが製品のこのリストにアクセスすることはできません。
私が直面している問題は、私が働いている顧客が各Productオブジェクトへのロールアクセスを制御できるようにすることです。作成されると、オブジェクトに割り当てられた標準的な一連の役割が存在するはずです。しかし、「管理者」ユーザーは、各オブジェクト/エンティティへのアクセスを制御できる必要があります。例えば
、我々はいくつかの役割を持つこのオブジェクトかもしれない:
var carProduct1 = new Product() {
Name = "Volvo XE 90",
Category = "Car",
Price = 51.600,
Roles = ["CarSeller", "ProductAdministrator", "Insurance", "VolvoExpert"]
};
をそして、これはおそらく、今のアイデアを得る別のオブジェクト
var carProduct2 = new Product() {
Name = "Ford Fiesta",
Category = "Car",
Price = 15000,
Roles = ["ProductAdministrator", "CarDealer", "FordExpert", "CarWorkshop"]
};
である可能性があります。ルートレベルでのアクセス制御からオブジェクトレベルへのアクセスを最善にするにはどうすればよいですか?これに関する書き込みはありますか(私のGoogle検索は実りありませんでした)?