redirect - 如何在 Grails 中正确定义重定向?
问题描述
在我的 grails 应用程序中,我使用拦截器来检查用户是否登录。如果没有,用户应该被重定向到登录页面(/account/index)。由于某种原因,这不起作用。(附加信息:我没有为我的控制器定义命名空间。)
我的应用程序中的相关代码片段:
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(controller: "account", action:"index")
"500"(view:'/error')
"404"(view:'/notFound')
}
}
在 application.yml 我设置了:
grails:
profile: web
cors:
enabled: true
codegen:
defaultPackage: myapp
gorm:
reactor:
# Whether to translate GORM events into Reactor events
# Disabled by default for performance reasons
events: false
spring:
jmx:
unique-names: true
main:
banner-mode: "off"
groovy:
template:
check-template-location: false
devtools:
restart:
additional-exclude:
- '*.gsp'
- '**/*.gsp'
- '*.gson'
- '**/*.gson'
- 'logback.groovy'
- '*.properties'
- 'grails-app/views/**'
- 'grails-app/i18n/**'
- 'grails-app/conf/**'
management:
endpoints:
enabled-by-default: false
但是将 cors 设置为启用或删除这些行没有任何区别。
拦截器中的重定向(每个控制器都有一个拦截器,我认为这是要走的路),如下所示:
class ZoneInterceptor {
boolean before() {
Boolean allowed = session?.user != null
if (!allowed) {
redirect(controller: "account", action: "index")
return false
}
return allowed
}
boolean after() { true }
void afterView() {
// no-op
}
}
这段代码给了我一个时髦的消息:浏览器显示一个弹出窗口“打开 xdg-open?一个网站想要打开这个应用程序”(使用最新的 chromium 和勇敢的浏览器,两者的反应方式相同,firefox 什么都不做.这就是为什么我认为问题肯定在我这边)。
我该如何解决?我只想有一个正确的重定向,而不是任何 xdg-open 弹出窗口。
提前感谢您的所有帮助!
解决方案
推荐阅读
- flutter - 在颤动中传递资产图像时显示错误
- python - Python类 - 从父类继承属性到顶层
- javascript - 如何阻止 div 在第一页加载时意外加载?
- scala - 当我尝试从弧度/度数转换时,为什么 Scala 会这样做,反之亦然?
- html - 将变量标记为 Django 模板中的 HTML 类(或 div)名称
- assembly - r8-15 寄存器编码的“X”部分是什么?
- swiftui - IOS 14 将 ObservedObject 添加到 var 导致视图不会出现在 iPhone 上
- pysimplegui - 如何在 PySimpleGUI 中将代码与窗口集成
- javascript - 如何让手风琴兼容IE9?
- npm - npm start 无法运行