2

Spring Security UI をインストールしました。デフォルトのフィールドで動作しています:

  • ユーザー名
  • Eメール
  • パスワード
  • パスワード2

フィールドをもっと増やしたい。例えば:

  • 電話番号
  • グレイルスイズクール

だから私はタイプします:

grails s2ui-override register packageName

grails.plugins.springsecurity.ui.RegisterControllerを拡張する空のクラスを作成します。

デフォルトのフィールド(ユーザー名、電子メール、パスワード、およびパスワード2)が一緒に表示される拡張クラスのすべてのコードをコピーして貼り付けるのは正しい方法ですか?次に、それらの後に新しいフィールドを追加しますか?(phoneNumber と grailsIsCool)。Alain Perry はこのアプローチに従い、コードをここに投稿しました: http://grails.1312388.n4.nabble.com/Using-spring-security-UI-with-customized-user-class-td2330737.html

4

1 に答える 1

2

これは良い質問だと思います。

私は約 5 か月前に Grails を使い始めました。最初に行ったことの 1 つは、Spring Security と Spring Security UI をインストールすることでした。最初RegisterControllerはプラグインが提供する を使用していましたが、ほとんどを書き直しました。

UIRegisterControllerには多くのビジネス ロジックが含まれています。私はコントローラーをできるだけ馬鹿げたままにしておくことを好むので、必要なコードをそこにRegistrationService移動しました。RegisterController

もう 1 つの落とし穴は、RegisterControllerでの grails コマンド オブジェクト パターンの使用です。アプリを CloudFoundry にデプロイしたときに問題が発生し、その理由がわかりませんでした。後で、他の人が同じ問題を経験したことを読みました。簡単な回避策ですが、しばらく頭を悩ませました...

お役に立てれば。

編集:

それでは、実際の質問に進みます。フィールドを追加したり、プラグインの動作をカスタマイズしたりする必要があるときにとったアプローチは、独自の実装を作成することだったと思います。

Userこれを に追加することで、デフォルトの Spring Security UIRoleUserRoleクラスをオーバーライドでき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注釈を追加する必要があるということです。そうしないと、実行時にさまざまな検証メソッドを使用できなくなります。

于 2013-07-05T07:33:09.573 に答える