在一个基于 grails 2.4.4 的新项目中,我正在使用带有反转选项的过滤器模式。通过反转规则,很少有控制器和来自另一个控制器的一些操作被排除在过滤器中。
过滤器不会应用于 Login、ForgotPassword 和 ServerError 控制器和 saveUser、verifyRegistration 来自不同用户控制器的操作。此过滤器架构未按预期工作。
当我在登录控制器中调用登录 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 但它没有按预期工作。这是一种奇怪的行为还是我做错了什么。发布整个过滤器类代码。
谢谢。