有没有一种方法可以防止请求使用过滤器到达 grails 中的操作
Is there a way to prevent request from reaching the action in grails using filters
我试图在令牌无效时阻止请求到达 grails 操作(“/$controller/$action?/$id”),以便它 return 成为 JSON在不调用操作的情况下响应客户端
我尝试将 return 语句添加到代码中,但请求仍然调用该操作。
我正在使用 java 7 和旧版本的 grails (grails 2.4.3)
class ShiroSecurityFilters {
def filters = {
vueJsFilter(uri: '/api/**'){
def userObject = null
def response_data = null
before = {
def authorization_header = request.getHeader("Authorization")
if (authorization_header){
def authorization = authorization_header.split(' ')[1]
userObject = Collaborateur.findByAccessToken(authorization)
if (userObject){
println "Welcome Back, $userObject"
}else{
response_data = [
title: "filter token error"
]
response.status = 401
render(response_data as JSON)
}
}
}
}
}
}
我希望过滤器阻止请求执行操作或调用它,而是将响应发送回客户端,而不是将请求发送到下一个资源,在这种情况下是操作,我在网上做了一些研究,但我没有找到任何东西,任何帮助将不胜感激
您必须从 before
过滤器中 return false 以防止调用操作。在上面的源代码中,过滤器没有 return 任何东西。
我试图在令牌无效时阻止请求到达 grails 操作(“/$controller/$action?/$id”),以便它 return 成为 JSON在不调用操作的情况下响应客户端
我尝试将 return 语句添加到代码中,但请求仍然调用该操作。 我正在使用 java 7 和旧版本的 grails (grails 2.4.3)
class ShiroSecurityFilters {
def filters = {
vueJsFilter(uri: '/api/**'){
def userObject = null
def response_data = null
before = {
def authorization_header = request.getHeader("Authorization")
if (authorization_header){
def authorization = authorization_header.split(' ')[1]
userObject = Collaborateur.findByAccessToken(authorization)
if (userObject){
println "Welcome Back, $userObject"
}else{
response_data = [
title: "filter token error"
]
response.status = 401
render(response_data as JSON)
}
}
}
}
}
}
我希望过滤器阻止请求执行操作或调用它,而是将响应发送回客户端,而不是将请求发送到下一个资源,在这种情况下是操作,我在网上做了一些研究,但我没有找到任何东西,任何帮助将不胜感激
您必须从 before
过滤器中 return false 以防止调用操作。在上面的源代码中,过滤器没有 return 任何东西。