我有一个运行良好的 Grails 2.1.1 应用程序,至少在我尝试为所有人定义一个过滤器Controller
以重定向到变量中未设置的index.gsp
if之前...user
session
无论我尝试什么,我都无法在启动服务器时重定向到“/index”,也无法渲染“/index” - 如果我删除过滤器并从我AuthenticationController
的错误参数中重定向到“/index”,所有工作都像魅力...
所以,这是我到目前为止所拥有的:
class AuthenticationFilters {
all(controller:'*', action'*') {
before = {
def user = (User) session.getValue("user")
if(user == null || !user.loginState) {
redirect(controller: 'authentication', action: 'index')
return false
}
}
}
}
class AuthenticationController {
def authenticationService
def index = {
render(view: '/index')
}
def login(LoginCommand cmd) {
if(cmd.hasErrors()) {
redirect(action: index)
return
}
}
....
}
现在,如果我注释掉all
过滤器定义,一切正常。我得到了启动时显示的页面(index.gsp),如果LoginCommand
有错误,我将被重定向到该index.gsp
页面而没有任何问题。如果我现在在all
过滤器定义中评论,我会得到一个404
.
我试过: Grails:重定向到不在任何控制器中的 index.gsp 升级到 Grails 2.0:/index.gsp 未找到 Grails:在 weblogic 中部署时的主要问题(及其解决方案)是什么?
但我没有运气...
我正在开发 Intellij IDEA 11.1.4 Premium(评估版)
编辑:我试图从我的类中的属性中获取User
对象,被一个块包围,现在面临的问题是该属性显然不可用?为什么?session
AuthenticationFilters
try/catch
session
try {
def user = (User) session.getValue("user")
if((user == null || !user.loginState)) {
...
}
} catch(Exception e) {
println("... couldn't get user from session! ${e.getMessage()}")
}
控制台输出:
... couldn't get user from session! No such property: session for class: grailstest001.AuthenticationFilters
对此有什么建议吗?