これは良い質問だと思います。
私は約 5 か月前に Grails を使い始めました。最初に行ったことの 1 つは、Spring Security と Spring Security UI をインストールすることでした。最初RegisterControllerはプラグインが提供する を使用していましたが、ほとんどを書き直しました。
UIRegisterControllerには多くのビジネス ロジックが含まれています。私はコントローラーをできるだけ馬鹿げたままにしておくことを好むので、必要なコードをそこにRegistrationService移動しました。RegisterController
もう 1 つの落とし穴は、RegisterControllerでの grails コマンド オブジェクト パターンの使用です。アプリを CloudFoundry にデプロイしたときに問題が発生し、その理由がわかりませんでした。後で、他の人が同じ問題を経験したことを読みました。簡単な回避策ですが、しばらく頭を悩ませました...
お役に立てれば。
編集:
それでは、実際の質問に進みます。フィールドを追加したり、プラグインの動作をカスタマイズしたりする必要があるときにとったアプローチは、独自の実装を作成することだったと思います。
Userこれを に追加することで、デフォルトの Spring Security UIRoleとUserRoleクラスをオーバーライドできConfig.groovyます。
grails.plugins.springsecurity.userLookup.userDomainClassName = 'com.myapp.MyUser'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'com.myapp.MyUserRole'
grails.plugins.springsecurity.authority.className = 'com.myapp.MyRole'
追加のフィールドが必要な場合は、それらをドメイン クラスに追加するだけです。また、これらの追加フィールドを処理するためUserに、 に検証ロジックを追加する必要があります。RegisterControllerCommand
あなたCommandの をトップレベルクラスとして引き出すことに関しては、私はコントローラと同じパッケージに入れておきます。注意すべきことの 1 つは、それらはもはやコントローラー内にないため、@grails.validation.Validateable注釈を追加する必要があるということです。そうしないと、実行時にさまざまな検証メソッドを使用できなくなります。