이것은 특히 grails 1.3.7 응용 프로그램에 관한 것이지만 잘하면 대답은 최신 버전에서도 잘 작동합니다. 아래 코드는 필요한 것을 단순화 한 것입니다. accountService가 주입 중입니다. 아래 스 니펫은 수행해야 할 작업을 수행하지만 명확하게 반복 코드입니다. 이것은 grails-app/conf에있는 UserFilter 클래스에 있습니다.grails 필터에서 일반적인 로직을 어떻게 제거합니까?
내 필터에서 일반적인 로직을 추출하고 리디렉션 및 세션 확인 기능을 유지하려면 어떻게해야합니까? 세션과 플래시를 전달하는 필터 클래스에 메서드를 추출해 보았습니다.하지만 리디렉션을 통해 여전히 문제가 발생했습니다.
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
}
}
}