0

Grails のような Command オブジェクトがあるとします。

class MyCommand {
   MyObject object;
}

着信要求データに ID 値があるobject場合、Grails データ バインディングが発生すると、コマンド オブジェクトにはデータベースからのオブジェクトのインスタンスが実際に取り込まれます。

私はこれをしたくありません。MyObject着信要求データが取り込まれた新しいインスタンスが必要です。DB に同じ ID のインスタンスが既に存在するかどうかは気にしません。自分で処理します。

このDBタイプのデータバインディングをグローバルレベルで、またはできればプロパティレベルで何らかの方法(注釈?)で無効にするにはどうすればよいですか。

他に考えられる唯一の方法は、リクエスト データを送信するときに、ID 値とオブジェクト プロパティを分離し、後でそれらを結合することです。避けられるならやりたくない。

4

1 に答える 1

0

ROLES を使用して、別の方法でエンドポイントを呼び出すことができます。例えば:

デフショー(){

    Person user = new Person()
    if(isSuperuser() && params?.id){
        user = Person.get(params.id.toLong())
    }else{
        user = Person.get(springSecurityService.principal.id)
    }
    ...

}

これにより、管理者のみがIDを提供できるように設定されます。それ以外の場合は、プリンシパルを使用してログインユーザーを取得します。

于 2021-01-27T15:25:05.483 に答える