工作我使用Hibernate的過濾器,以使每一個它繼承業務領域的分支ID ....我列入休眠過濾器像Hibernate的過濾器插件不是Grails的
static hibernateFilters = {
branchEnabledFilter(condition: ':branch_id=branch_id', types: 'long', default: true)
}
啓用該休眠過濾器通過我們的Grails的過濾器......像下面..
def filters = {
all(controller:'login', action:'auth',invert:true) {
before = {
grailsApplication.getArtefacts("Domain")*.clazz.each{ clazz ->
if(clazz.getGenericSuperclass().getName().contains('BusinessDomain')){
def filter = clazz.enableHibernateFilter('branchEnabledFilter')
filter.setParameter('branch_id',applicationContext.springSecurityService.principal?.branchId as long)
}
}
}
after = {
//
}
}
}
當用戶登錄第一次,我打電話給家庭控制器,然後在儀表板頁面,通過鏈接調用通知控制器......我第一次錯誤,如分支ID沒有設置...但我的過濾器工作...但它確實nt啓用這個請求的Hibernate過濾器...但是,如果我修改過濾器中的任何代碼,如評論println或取消註釋println,那時候編譯過濾器......然後一切工作正常......請告訴我這裏發生了什麼......如何解決這個問題...如何讓工作在所有的請求..
我覺得這裏有趣的是,你攔截login/auth,通常只顯示登錄頁面和請求委託人的分支id。在大多數情況下,這些信息不會被認爲是用戶正要登錄。我可能會掛鉤登錄成功,然後應用過濾器。順便說一下,過濾器是會話感知或登錄的人首先設置爲所有其他人? – defectus
首先。謝謝您的回覆。在登錄控制器,身份驗證操作給登錄頁面...除了這一行動,在每一個控制器的行動...我要求分行ID ...反轉真正會做那個工作...我認爲 – Visme
這個問題解決了嗎?我面臨同樣的問題。 – Balkrishna