這是關於grails 1.3.7應用程序的具體內容,但希望這些答案也適用於新版本。下面的代碼是需要的簡化版本。 accountService正在被注入。下面的代碼片段完成了它應該做的事情,但顯然是重複的代碼。這是位於在grails-app一個UserFilter類/ conf目錄如何從Grails過濾器中刪除公共邏輯?
我如何提取常見的邏輯我的過濾器,保持重定向和檢查會話的能力?我已經嘗試將一種方法提取到過濾器類中,傳入會話和flash,但重定向仍然給我提出問題。
def filters = {
// ... other filters ...
adminAllCheck(controller: 'administration', action: '*') {
before = {
if(!session.isAdmin) {
if(accountService.isAdmin()) {
session.isAdmin = true
} else {
flash.message = 'Non admin'
redirect(controller: 'home', action: 'index')
return false
}
}
true
}
}
userListCheck(controller: 'user', action: 'list') {
before = {
if(!session.isAdmin) {
if(accountService.isAdmin()) {
session.isAdmin = true
} else {
flash.message = 'Non admin'
redirect(controller: 'home', action: 'index')
return false
}
}
true
}
}
}