无法初始化代理 - 没有会话,访问过滤器类中的会话对象

时间:2012-07-23 12:02:06

标签: grails groovy

我对groovy grails技术有点新意,我遇到了这个问题

我查看了这个could not initialize proxy - no Session,但应用程序不会过时陈旧

我正在尝试访问放置在config子文件夹上的SecurityFilter上的会话对象。我只想检查控制器上的每个请求,以验证用户是否有权执行此类操作。

class SecurityFilters {
    def filters = {

    userFilterList(controller:"user", action:"list") {
        before = {
            if (!session.user.accountType.equals("Admin")) {
                redirect(uri: "/")
            }
        }
    }
    userFilterShow(controller:"user", action:"show") {
        before = {
            if (!session.user.accountType.equals("Admin")) {
                redirect(uri: "/")
            }
        }
    }
    userFilterEdit(controller:"user", action:"edit") {
        before = {
            if (!session.user.accountType.equals("Admin")) {
                redirect(uri: "/")
            }
        }
    }

    }
}

但我收到此错误

Message: could not initialize proxy - no Session
Line | Method
->>    6 | doCall    in SecurityFilters$_closure1_closure2_closure5
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    186 | doFilter  in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter  in grails.plugin.cache.web.filter.AbstractFilter
|   1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    603 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    636 | run       in java.lang.Thread

在我到达这一点之前,我在执行登录指令后立即将用户对象放在会话对象上,但我不确定会话对象变得不可用会发生什么

1 个答案:

答案 0 :(得分:2)

用户对象的某些属性未被检索,所以在登录时我将用户对象放在会话中,我还必须手动传输我需要的属性,以便我可以再次检索以供以后使用

session.user = user //not enough
session.user.accountType = user.accountType

现在我能够从会话对象中检索用户对象并获取我想要的属性