2015-03-10 4 views
1

Я использую версию 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, если таковые имеются, сообщите мне правильную версию или возможное решение.

+1

Можете ли вы написать еще один код от контроллера и служб, где вы пишете код сохранения, а также предоставляете свою структуру домена. – user1791574

+0

Я изменил код, инструктирующий домен, контроллер. Посмотрите на это – Srinivas21

ответ

1

Вы можете показать нам свой файл DataSource.groovy? Помните, что события GORM запускаются столько раз, сколько источников данных, которые у вас есть в приложении.

Смежные вопросы