ユーザーオブジェクトを取得する必要がある場合は、 「新鮮な」取得springSecurityService
前に注入されたを使用してユーザーインスタンスごとに(DBから撮影):
springSecurityService.principal.username
しかし、あなたは唯一のユーザ名が必要な場合 - あなたはセッションスコープのBeanを作成して、で、ユーザー名とそれを埋めることができ作成時間:
resources.groovy:
...
userNameHolder(UserNameHolder) { bean ->
bean.scope = 'session'
springSecurityService = ref("springSecurityService")
}
...
そして:
class UserNameHolder {
def springSecurityService
String username = springSecurityService.principal.username
String getUsername() {
username
}
}
次に、あなたが必要な場所へUserNameHolder
を注入し、ユーザー名を取得する必要があります。
class SomeService {
def userNameHolder
void someMethod() {
...
userNameHolder.username
...
}
...
}
をお楽しみください!
UPD:
あなたはたHTTPSessionにユーザー名を置くことによって、ほぼ同じことを行うことができますが、それははるかに少ないcontrolableとテスト可能になります。したがって、セッションスコープのBeanを使用することを強くお勧めします。
BaseControllerという名前のクラスを作成し、すべてのコントローラーがそのクラスを拡張してから、すべてからアクセス可能な保護されたメソッドを作成します。 – Raphael