2017-02-14 5 views
0

私はCrudRepositoryを作成するためにSpringBoot Spring-Data-Restを使用しており、残りのエンドポイントをユーザーに公開しています。CrudRepositoryで作成アクションを制限し、編集アクションのみを許可します

しかし、ユーザーが新しいレコードを作成しないようにしたい。 既存のレコードのみを更新できるようにします。

どのように達成できますか? CrudRepositoryはあなたがインターセプタを追加することができ、ちょうどsavedelete ...

+0

あなたのコメントから判断すると、実際に行った質問はありませんでした。実際の問題と一致するように質問を更新し、解決策を回答として投稿して、類似の問題を持つ他の人に役立つかもしれませんか? –

答えて

0

CrudRepositoryはCREATEを提供します同じ方法のEDITsave。 しかし、spring-data-restはHTTPメソッドPOST、PUT、PATCHによってこれらの2つの操作を公開します。

POSTがCREATEのために使用されているので、我々は、ばねのセキュリティにより、この方法を制限することができます。antMatchers(HttpMethod.POST、 "/ ...")denyAll()

私は、サンプルプロジェクトhereを作成します。

1

create方法を持っていません。

public class SecurityInterceptor extends EmptyInterceptor { 

    @Override 
    public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { 
     // insert logic here to check if it's an update 
     return super.onSave(entity, id, state, propertyNames, types); 

    } 

} 

はあなたapplication.yamlでインターセプタを追加します。

jpa: 
    properties: 
     hibernate: 
     ejb: 
      interceptor: hello.SecurityInterceptor 
+1

'antMatchers(HttpMethod.POST、"/... ")。denyAll()'を使ってHTTP POSTを制限する方法が見つかりました。しかし、答えに感謝します。 – Akivamu

関連する問題