SpringSecurityCore プラグインと一緒にセットアップした基本的な Grails 2 アプリケーションがあります。これはうまく機能しているようです。ただし、拡張クラスを使用して User.groovy ファイルに追加のプロパティを追加しようとすると、コントローラーでそれらのプロパティを参照できないようです。
この問題をよりよく説明するために、User.groovy を拡張する私の基本的なクラスを見てください。
UserInfo.groovy:
class UserInfo extends User {
String firstname
String lastname
}
現在のユーザーの名を参照したいページで、次のようにメソッドを記述しています。
def index() {
def uname = springSecurityService.currentUser.username
def firstname = springSecurityService.currentUser.firstname
render uname
}
これは、ユーザー名のレンダリングには問題なく機能します。これは、ユーザー名がベースの User.groovy ファイルで参照されているためだと思います。
class User {
transient springSecurityService
String username
String password
ただし、firstname を springSecurityService.currentUser.firstname の一部として定義しようとすると、上記の「def index()」メソッドは失敗します。
基本の User.groovy クラスに追加のプロパティを挿入すると、springSecurityService.currentUser.[property] を介してそれらを参照できます。
これを説明するには:
class User {
transient springSecurityService
String username
String password
String firstname
...
その後、前述の index メソッドでユーザーの firstname プロパティを参照できます。
基本 User クラスに値を挿入せずに、User の拡張プロパティを参照することはできますか? ここでの私の目標は、 UserInfo.groovy ファイルで参照されている値を呼び出すことができるようにしながら、 User クラスをできるだけきれいに保つことです。
よろしくお願いいたします。