这是专门关于 grails 1.3.7 应用程序的,但希望答案也适用于较新的版本。下面的代码是所需内容的简化版本。accountService 正在被注入。下面的代码片段完成了它应该做的事情,但显然是重复的代码。这是位于 grails-app/conf 中的 UserFilter 类
如何从过滤器中提取通用逻辑并保持重定向和检查会话的能力?我尝试将一个方法提取到过滤器类中,传入会话和闪存,但重定向仍然给我带来问题。
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
}
}
}