मैंने अपने आवेदन में audit-logging
प्लगइन स्थापित किया है। Grails संस्करण 2.1.1
है और प्लगइन संस्करण 1.0.1
है।लेखापरीक्षा-लॉगिंग प्लगइन का उपयोग कर ग्रिल में डाले गए डबल रिकॉर्ड
मेरी Config.groovy
कक्षा में, मैं इस
auditLog {
verbose = true // verbosely log all changed values to db
logIds = true // log db-ids of associated objects.
// Note: if you change next 2 properties, you must update your database schema!
tablename = 'audit_logs' // table name for audit logs.
transactional = false
actorClosure = { request, session ->
org.apache.shiro.SecurityUtils.getSubject()?.getPrincipal()
}
जोड़ लिया है और मेरे डोमेन वर्ग में मैं इस
class Survey {
static auditable = true
static final int NO_RUNNING_SURVERY = 0
static final int RUNNING_SURVERY = 1
static final int CALL_NO_Record_SURVEY = 0
static final int CALL_Record_SURVEY = 1
static final int REALTIME_SURVEY = 0
static final int HISTORICAL_SURVEY = 1
static final int STANDARD_SURVERY = 2
String name
String description
int status
}
जब मैं जोड़ने, हटाने और कुछ बात अद्यतन जोड़ लिया है। मेरी audit_logs
तालिका में, एक ऑपरेशन के खिलाफ डबल रिकॉर्ड डाला गया उदा। मैं अपने नियंत्रक वर्ग
def stopSurvey(Long id) {
def survey = Survey.findById(params['stop'])
survey.status = Survey.NO_RUNNING_SURVERY
redirect(action: "list")
}
से स्थिति मान बदलते हैं तो यह प्रति कॉल दो रिकॉर्ड डाल देता है।
मैं बिना 'actorClosure' (Shiro का उपयोग नहीं किया) एक ही परीक्षण किया है और मैं इस व्यवहार को नहीं दिख रहा। क्या आप इस समस्या को दोहराने वाले जिथब में नमूना ऐप साझा कर सकते हैं (शिरो का उपयोग करके)? मैंने देखा है कि आपने नियंत्रक में एक कस्टम पहचानकर्ता का उपयोग किया है जिसे मैं कहीं भी मैप किए गए डोमेन क्लास में नहीं देखता हूं। – dmahapatro