0

私はこのシナリオを持っています:

1 ユーザー - N プロジェクト

1 プロジェクト - N タスク

1 プロジェクト - N コメント

ユーザーが認証されると、次のことができます。

/api/tasks/1

彼のタスクを削除するには

/api/comments/1 

彼のコメントを取得するためですが、彼が /api/comments/2 を実行しているとき、彼は他の誰かのタスクを読み取ります

ユーザー アクション (URI の操作) をインターセプトし、ユーザーがこのタスクを削除できるかどうかを一般的な方法で確認するにはどうすればよいですか。

タスクとコメントは userId について何も知らないので、ユーザーが他の人のデータを削除することをどのように禁止できますか?

ユーザーとロールのシナリオについて話しているのではありません。URI を操作して、他の誰かに属するリソースを削除することについて話しているのです。

@A Khudairyの質問に答える更新

1) メール + パスワードが api に送信されます。

2) API は、ユーザー トークンを使用してユーザーを返します。

3) 次に、すべてのリクエストでトークンが api に送信されます (これにより、どのユーザーが何をしているかがわかり、バックエンドでこれを処理します)。

4

2 に答える 2

0

簡単に確認できるように UserId を Comment および Task エンティティに追加する必要があるか、それとも Task または Comment がユーザーもアクセスできるプロジェクトに属していることを確認する必要があるように思えますか?

私があなたの質問を誤解していない限り?

タスクまたはコメントに UserId がない場合、自分のコメントおよびタスクと他のユーザーをどのように区別しますか?

于 2014-01-16T09:45:44.957 に答える
0

個人的には URI を使用してこれを解決するつもりはありません (それを実現するための安全な方法はないと思います)。カスタム承認フィルターを実装します。慣れていない場合は、このリンクを確認して、その方法についてのヘルプを確認してください。

フィルターでは、トークンを使用してユーザー ID を取得し、ルート データを使用して、ユーザーが実行しようとしている手順 (およびタスクまたはコメントの ID) を確認し、それに基づいてユーザーが続行できるかどうかを判断します。

フィルターは、コントローラー クラスの上、または一部のアクション メソッドに登録するか、必要に応じて global.asax からすべてのアクションに登録できます。

于 2014-01-16T12:12:34.983 に答える