grails 2.4.4问题反转过滤器模式

时间:2015-08-03 12:44:32

标签: grails servlet-filters grails-2.4

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

感谢。

0 个答案:

没有答案