Граальс 2.4.4 выдаёт схему инвертирующих фильтров
В новом проекте, основанном на Grails 2.4.4, я использую схему фильтра с опцией инвертирования. Немного контроллеров и некоторые действия от других контроллеров исключены в фильтрах путем инвертирования правила.
Фильтр не будет применяться для контроллеров Login, ForgotPassword и ServerError и saveUser, проверять действия регистрации с другого пользовательского контроллера. Эта схема фильтра не работает должным образом.
Когда я вызываю API входа в контроллере входа, фильтр выполняется и выдает исключение.
package com.project.filters
import grails.converters.JSON
class MyProjectAuthorizationFilters {
def userService
def grailsApplication
def filters = {
checkXAuthToken(controller:'login|forgotPassword|serverError', action:'saveUser|verifyRegistration', invert: true) {
before = {
try{
String tokenValue = request.getHeader('X-Auth-Token')
if(tokenValue == null && tokenValue == ""){
throw new MyCustomException(401, "Please provide X-Auth-Token in Header")
}
userService.getUserByAuthToken(tokenValue)
}catch (MyCustomException error) {
error.stackTrace = ""
response.setStatus(error.status)
render error as JSON
return false
}
}
}
}
}
Я знаю, что мы также можем использовать controllerExclude, actionExclude, но не знал, почему это ломается?
РЕДАКТИРОВАТЬ Я даже пытался использовать controllerExclude и actionExclude, но он не работает, как ожидалось. Это утомленное поведение, или я делаю что-то не так. Размещение всего кода класса фильтра.
Благодарю.