2

在一个基于 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 但它没有按预期工作。这是一种奇怪的行为还是我做错了什么。发布整个过滤器类代码。

谢谢。

4

0 回答 0