我使用Spring Security Plugin在我的Grails應用程序中管理成員資格和身份驗證。Grails Spring Security Plugin - 與用戶域的一對一關聯
我想通過一對一的關聯將用戶域類與配置文件域相關聯。
我加在User.groovy這些行:
static hasOne = [userProfile:UserProfile]
static constraints = {
//...
userProfile unique:true
}
,並UserProfile.groovy:
User user
唉,調用UseRole.create(用戶,角色),當我有錯誤。
有關如何獲得我正在尋找的相同功能的一些最佳做法。特別是,我想將任何用戶與一個配置文件對象相關聯以擴展它。
我想你還需要增加一個一對多的發佈訊息和其他表的關係......
感謝 問候
PS: 我得到這個錯誤:
配置Spring安全UI ... 2011-03-08 12:18:51,179 [main] ERROR context.GrailsContextLoader - 執行bootstraps時出錯:null java.lang.NullPointerException at $ Proxy19.save(Unknown Source) a t com.dromedian.xxxxx.security.UserRole.create(UserRole.groovy:32) at com.dromedian.xxxxx.security.UserRole $ create.call(Unknown Source) at BootStrap $ _closure1.doCall(BootStrap.groovy: 20) 在grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:251) 在grails.util.Environment.executeForEnvironment(Environment.java:244) 在grails.util.Environment.executeForCurrentEnvironment(Environment.java:220)在_GrailsRun_groovy 在org.grails.tomcat.TomcatServer.start(TomcatServer.groovy::212) 在grails.web.container.EmbeddableServer $ start.call(未知來源) 在_GrailsRun_groovy $ _run_closure5_closure12.doCall(158 _GrailsRun_groovy) $ _run_closure5_closure12.doCall(_GrailsRun_groovy) 在_GrailsSettings_groovy $ _run_closure10.doCall(_GrailsSettings_groovy:280) 在_GrailsSettings_groovy $ _run_closure10.call(_GrailsSettings_groovy) 在_GrailsRun_groovy $ _run_closure5.doCall(_GrailsRun_groovy:149) 在_GrailsRun_groovy $ _run_closure5.call(_GrailsRun_groovy) 在_GrailsRun_groovy.runInline( _GrailsRun_groovy:116) 在_GrailsRun_groovy.this $ 4 $ runInline(_GrailsRun_groovy) 在_GrailsRun_groovy $ _run_closure1.doCall(_GrailsRun_groovy:59) 在RunApp $ _run_closure1.doCall(RunApp.groovy:33) 在gant.Gant $ _dispatch_closure5.doCall (Gant.groovy:381) at gant.Gant $ _dispatch_closure7.doCall(Gant.groovy:415) at gant.Gant $ _dispatch_closure7.doCal l(Gant.groovy) at gant.Gant.withBuildListeners(Gant.groovy:427) at gant.Gant.this $ 2 $ withBuildListeners(Gant.groovy) at gant.Gant $ this $ 2 $ withBuildListeners.callCurrent(Unknown Source ) 在gant.Gant.dispatch(Gant.groovy:415) 在gant.Gant.this $ 2 $訊(Gant.groovy) 在gant.Gant.invokeMethod(Gant.groovy) 在gant.Gant.executeTargets(甘特。常規:590) 在gant.Gant.executeTargets(Gant.groovy:589) 應用程序上下文關停......
的配置是:
User.groovy(域類彈簧安全插件創建)
static hasOne = [userDetail:UserDetail]
static constraints = {
username blank: false, unique: true
password blank: false
userDetail unique:true
}
UserDetail.groovy
static hasOne = [user:User]
static belongsTo = User
BootStrap.groovy中
//TODO temporary added - no for production or persistent db
def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)
def userRole = new Role(authority: 'ROLE_USER').save(flush: true)
String password = springSecurityService.encodePassword('password')
def testUser = new User(username: 'me', enabled: true, password: password)
testUser.save(flush: true)
if(testUser != null){
UserRole.create testUser, adminRole, true
}
如果我不叫
UserRole.create testUser, adminRole, true
沒有錯誤。我試圖調試,但我可以理解錯誤在哪裏。
您需要向我們顯示錯誤消息,因爲我們沒有魔力來查看您的屏幕。 ;) – Gregg 2011-03-02 16:40:05
您必須更具體地瞭解您收到的錯誤消息的位置和地址。 – jjczopek 2011-03-03 00:06:41
對不起,我現在發佈了錯誤消息:) – ryuujin 2011-03-08 11:23:40