は、次のように私は2つのエンティティがあるとし、独自のレコードを更新することができますを確認します。認証されたユーザーのみ
@Entity
public class ClassA {
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToMany
private Set<ClassB> classBs = new HashSet<>();
}
@Entity
public class ClassB {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
つまり、にClassAはClassBののセットが含まれています。 A級更新するのでなどとリソース(休止状態を使用して)DAOで
@RequestMapping(method = RequestMethod.PUT)
public ClassA update(@RequestBody ClassA a){
// Update code here
}
した後に、次のデータベースにClassAクラスを更新するために呼び出される。更新シナリオで
@Override
public ClassA save(ClassA classA) {
sessionFactory.getCurrentSession().saveOrUpdate(classA);
return classA;
}
場合認証されたユーザーは、ClassB
のインスタンスのid
を、別のユーザーに属するid
に変更します。このユーザーは、ユーザーに属していないオブジェクトを更新するユーザーの停止を防ぐ保護がありません。これを防ぐ方法はありますか?これを防ぐためのベストプラクティスは何ですか(つまり、別のユーザーを更新することを防ぐclassB
の詳細)?
答えていただきありがとうございます。この場合、コントローラとDAOの間にサービスレイヤーがあるので、その間のロジックを使用するとこれを整理することができます。私は、質問がより多くの質問を自動的に冬眠(またはおそらく春/春のセキュリティ)を可能にすることですあなたのためにこの仕事をしていると思いますか?あるいは、これを行う方法が知られていて、どこかに文書化されていれば。 –