我在 app1 中有以下过滤器,它应该重定向到外部应用程序(app2)。
class MyFilters {
def userService
def springSecurityService
def filters = {
all(controller: '*', action: '*') {
before = {
String userAgent = request.getHeader('User-Agent')
int buildVersion = 0
// Match "app-/{version}" where {version} is the build number
def matcher = userAgent =~ "(?i)app(?:-\\w+)?\\/(\\d+)"
if (matcher.getCount() > 0)
{
buildVersion = Integer.parseInt(matcher[0][1])
log.info("User agent is from a mobile with build version = " + buildVersion)
log.info("User agent = " + userAgent)
String redirectUrl = "https://anotherdomain.com"
if (buildVersion > 12)
{
if (request.queryString != null)
{
log.info("Redirecting request to anotherdomain with query string")
redirect(url:"${redirectUrl}${request.forwardURI}?${request.queryString}",params:params)
}
return false
}
}
}
after = { model ->
if (model) {
model['currentUser'] = userService.currentUser
}
}
afterView = {
}
}
}
}
当对 app1 的请求包含控制器名称在 app1 中不存在的 URI(但在我想要重定向到的 app2 中存在)时,就会出现问题。
如何将请求重定向到附加相同 URI 的 app2?(无论它们是否存在于 app1 中)。
我怀疑过滤器不是正确的解决方案,因为如果应用程序中不存在控制器,它将永远不会进入它们。
理想情况下,我需要一个可以通过代码而不是 apache 实现的解决方案。
谢谢