2015-03-10 4 views
1

J'utilise grails version 2.1.0 dans mon application et j'ai une insertion avant dans ma classe de domaine qui code le mot de passe comme ci-dessous.BeforeInsert et BeforeUpdate sont lancés deux fois dans la classe de domaine grails

package com.valuelabs.bets.security

classe Secuser { de springSecurityService transitoire

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'] 

}

Voici ma logique de commande

if (!secUserInstance.save(flush:true)) { 
     println "13" 
     //secUserInstance.errors.allErrors.each { println it } 
     render(view: "create", model: [secUserInstance: secUserInstance,curRole:""]) 
     return 
    } 

maintenant le problème est le mot de passe est encoder deux fois quand je sav e l'instance.

S'il vous plaît laissez-moi savoir si il y a un problème avec la version de gravier, le cas échéant s'il vous plaît laissez-moi savoir la bonne version ou la solution possible.

+1

Pouvez-vous s'il vous plaît écrire un peu plus de code du contrôleur et des services où vous écrivez le code de sauvegarde et fournissez également votre structure de domaine. – user1791574

+0

J'ai changé le code briefing le domaine, le contrôleur. S'il vous plaît regardez – Srinivas21

Répondre

1

Pouvez-vous nous montrer votre fichier DataSource.groovy? Sachez que les événements GORM sont déclenchés autant de fois que les sources de données que vous avez dans votre application.