Я использую версию Grails 2.1.0 в своем приложении, и у меня есть перед вставкой в мой класс домена, который кодирует пароль, как показано ниже.BeforeInsert и BeforeUpdate дважды запускаются в классе домена grails
пакет com.valuelabs.bets.security
класс SecUser { переходная springSecurityService
String username
String password
String emailId
String mobileNumber
String position
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
boolean firstTimeLogin
String userstatus
String userRole
Date activateDate
Date expireDate = new Date()
Audit audit
static embedded = ['audit']
static mapping = {
password column: '`password`'
sort "username"
}
def beforeInsert() {
println "in before insert"
encodePassword()
}
def beforeUpdate() {
println "in before update"
if (isDirty('password')) {
encodePassword()
}
audit.lastUpdated = new Date()
}
protected void encodePassword() {
println " Before ========================> "+ password
if(springSecurityService){
password = springSecurityService.encodePassword(password)
}
println " springSecurityService "+ springSecurityService +" password "+password
}
Set<SecRole> getAuthorities() {
SecUserSecRole.findAllBySecUser(this).collect { it.secRole } as Set
}
String toString(){
username
}
static transients = ['userstatus','userRole']
}
Вот мой контроллер логики
if (!secUserInstance.save(flush:true)) {
println "13"
//secUserInstance.errors.allErrors.each { println it }
render(view: "create", model: [secUserInstance: secUserInstance,curRole:""])
return
}
теперь проблема пароль кодируется дважды, когда я sav e экземпляр.
Пожалуйста, дайте мне знать, есть ли проблемы с версией Grails, если таковые имеются, сообщите мне правильную версию или возможное решение.
Можете ли вы написать еще один код от контроллера и служб, где вы пишете код сохранения, а также предоставляете свою структуру домена. – user1791574
Я изменил код, инструктирующий домен, контроллер. Посмотрите на это – Srinivas21