2016-05-26 10 views
0

多くのエンティティでは、エンティティまたはエンティティを要求する権限を持つユーザーがいます。ユーザーは複数のダッシュボードを作成できます。通常のユーザーは自分のダッシュボードを照会するだけで、管理者はダッシュボードを見ることができます。複数のGetメソッドOData

この状況でODataで使用する最も良いURIの規約は何ですか?私はhttp://example.com/odata/Dashboardsのようなものを考えていました。ダッシュボードの所有権しか与えられておらず、http://example.com/odata/Dashboards/Anyというダッシュボードのエンティティへのアクセス権が与えられていましたが、実際に行く方法はわかりません。

チュートリアルでは複雑な権限をどのように処理するか、何かに何かにアクセスすることだけでなく、

あなたはそれについて何を提案しなければなりませんか?認可に関して複雑なケースを説明するチュートリアルがあれば、本当に興味があります。

ありがとうございました!

答えて

1

については、http://example.com/odata/Users(1)/Default.Dashboards()を使用し、ユーザーコントローラのDashboards関数では、関連するダッシュボードを返します。

builder.EntityType<User>().Function("Dashboards").ReturnsCollectionFromEntitySet<Dashboard>("Dashboards"); 

[HttpGet] 
[ODataRoute("Users({key})/Default.Dashboards()")] 
public IQueryable<Dashboard> Dashboards(int key) 
{ 
    // determine the user's rights 
    return _db.Dashboard.Where ... 
} 
+0

これは良い考えですが、認証されたユーザーが独自のIDを送信するのは奇妙だと思います。キーをオプションにする方法はありますか?ありがとうございました! – Sproulx

+0

認証部分については、私はあなたがIDを取得するには、WEB APIの標準実装を考慮する必要があると思う、おそらく認可フィルタ –

関連する問題