問題は、次の例により定義することができる。関連リソースを保護する方法は?
Iは@OneToOne
関係によってAssociatedClass
と呼ばれる別のクラスに関連するクラスMainClass
を有します。両方とも公開リポジトリを持っているので、URL /mainClasses/{some_id}
とURL /associatedClasses/{some_id}
でGETを実行できます。しかし、AssociatedClassRepository
は、次のコードを持っています
@RepositoryRestResource
public interface AssociatedClassRepository extends PagingAndSortingRepository<AssociatedClass, String> {
@Override
@PreAuthorize("1 == 2")
AssociatedClass findOne(String s);
}
だから、タイプAssociatedClass
のオブジェクトにGETメソッドを認可することはありません。しかし、タイプMainClass
のオブジェクトにはAssociatedClass
オブジェクトが関連付けられているため、/mainClasses/{some_id}/associatedClass
でGETを実行してこのオブジェクトを取得できます。
/mainClasses/{some_id}/associatedClass
へのアクセスをブロックしたいと思いますが、すべてのユーザーにアクセスすることはできません。私は@PreCondition
を介してそれを行うことができます同じ方法でいくつかの条件を定義したいと思います。そのため、認証されたユーザーがリソースの所有者である場合にのみアクセスを許可できます。これが実際の目標です。
アイデア?
コントローラコードを投稿できますか?とリポジトリコード? –
私はSpring Data Restを使用しているため、コントローラがありません。あなたがAssociatedClassRepositoryの完全なコードを見ることができるように私は投稿を編集しました。 – bergacat1
これはセキュリティが全く活性化されていないように見えます。 Spring Data RESTは基本的にメソッドを呼び出すだけです。それがセキュリティ例外を引き起こさない場合は、Spring Securityの設定が正しくないようです。メソッドセキュリティを有効にしてもよろしいですか? –