2016-03-18 7 views
2

シナリオ:ユーザーが写真をアップロードできる写真共有サイト。ユーザーは自分の写真を削除または編集できます。 deleteメソッドとeditメソッドはPostメソッドです。これらのメソッドは写真IDを使用して写真の位置を特定し、変更します。写真は、次のような現在の認証されたユーザー情報によって取得されます。SecurityContextHolder.getContext().getAuthentication();ユーザーが他のユーザーのデータを変更しないようにするにはどうすればよいですか?

したがって、ユーザーAがユーザーBの写真IDを削除したい場合、AはJavaScriptを使用してポストメソッドを書き込み、ユーザーBの写真を削除します。

これは可能ですか?あるいは、この練習は問題がありますか?

+0

「アクセス制御」には「リスト」が必要です。 http://docs.spring.io/spring-security/site/docs/4.0.4.RELEASE/reference/htmlsingle/#domain-acls –

答えて

1

権限に基づいて削除できるサービス層を作成する必要があります。

これにより、ユーザーは削除すべきではないアセットを削除できなくなります。

それぞれの要求は、これを検証して、削除できないユーザーを確実に確認します。

あなたのドメインがどのように権限を管理しているかによって、アセットに特定の所有者がある場合はSecurityContextHolderを使用できます。それ以外の場合は独自のロジックを実装する必要があります。

+0

私が考えていた方法は、写真の表にカラムuser_idを入れてチェックしています写真が現在の認証されたユーザーに属している場合。しかし、これは多くのリソースを無駄にしていると思うので、多くのデータベース操作が発生します。 – Tong

+0

@トン実際、私はこれはきわめて公正な解決策だと思います。それは所有者だけが修正できることを保証します。 – dkanejs

+0

@トゥーンスコープ内の写真を既に持っているときに読み込まれるデータベースは単純な比較です。リソースの浪費ではありません。 – dkanejs

関連する問題