これは良い質問だと思います。
私は約 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
に、 に検証ロジックを追加する必要があります。RegisterController
Command
あなたCommand
の をトップレベルクラスとして引き出すことに関しては、私はコントローラと同じパッケージに入れておきます。注意すべきことの 1 つは、それらはもはやコントローラー内にないため、@grails.validation.Validateable
注釈を追加する必要があるということです。そうしないと、実行時にさまざまな検証メソッドを使用できなくなります。