Java 阻止登录筛选器筛选web服务url

Java 阻止登录筛选器筛选web服务url,java,spring,grails,filter,grails-filters,Java,Spring,Grails,Filter,Grails Filters,我在api/interface/data上有JAX-RS服务,我在我的web应用程序中使用了登录过滤器,它过滤所有url并确保用户登录 登录筛选代码为: all(controller:'site',invert:true) { before = { if (session.getAttribute("currentUserId")==null) { redirect(controller:"site"

我在
api/interface/data
上有JAX-RS服务,我在我的web应用程序中使用了登录过滤器,它过滤所有url并确保用户登录
登录筛选代码为:

all(controller:'site',invert:true) {
            before = {
                if (session.getAttribute("currentUserId")==null) {
                    redirect(controller:"site",action:"index")
                    return false
                }
            }
}
问题是,每当我通过任何rest客户端请求web服务时,都会重定向我,因为我没有登录到会话。

我曾尝试使用
all(controller:'site | api',invert:true)
但它不起作用。

您的过滤器适用于任何不来自controller站点的内容,因此api/接口/数据将属于该范围。除了api/接口/数据外,您是否正在尝试将该筛选器应用于所有站点?如果是这样的话,那么您应该使用all(uri:'/api/**',invert:true)您可能希望在筛选规则中使用uri、uriExclude和regex选项,下面是一些。