gpt4 book ai didi

grails - 当前 Controller 中不存在 Controller 时,如何使用过滤器重定向到外部URL

转载 作者:行者123 更新时间:2023-12-02 14:17:25 25 4
gpt4 key购买 nike

我在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的请求包含URI时,在app1中不存在 Controller 名称(但是在我要重定向到的app2中,则存在 Controller 名称)时,会发生问题。

如何将请求重定向到附加了相同URI的app2? (无论它们是否存在于app1中)。

我怀疑过滤器不是正确的解决方案,因为如果应用程序中不存在该 Controller ,它将永远不会输入它们。

理想情况下,我需要一个可以通过代码而不是Apache实现的解决方案。

谢谢

最佳答案

您可以通过URI以及 Controller 名称来set the scope of a filter,请尝试:

def filters = {
all(uri:'/**') {

关于grails - 当前 Controller 中不存在 Controller 时,如何使用过滤器重定向到外部URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com