1

我使用 Grails Application Info Plugin来获取活动会话:

ScopesInfoService scopesInfoService

List<Map<String, Object>> activeSessionsMap = scopesInfoService.getSessionsInfo()
activeSessionsMap.each { sessionMap ->
            def tmpSession = sessionMap.session
}

如何查看已请求和正在请求具有会话的用户的哪个页面?

4

2 回答 2

4

创建一个过滤器并将每个请求的当前controlleraction/或存储request.forwardURI在一个名为 currentLocation 的变量中。当您访问会话时,只需阅读即可。您可以发挥创意并存储任何数据。但不确定这是一个正确的方法。

storeLocation(controller: '*', action: '*') {
            before = {
                session.currentLocation = "$controllerName/$actionName"
            }
        }
于 2013-08-16T15:01:33.973 回答
1

这个插件不会给你那个。你需要自己开发一些东西。您可以创建一个grails 过滤器,将有关会话、用户和请求的 URI(您的页面)的信息保存到您的数据库(为此创建一个新表)。

样品过滤器:

class UserInfoFilters {
    def filters = {
            all(controller:'*', action:'*') {
                before = {
                    SessionUserInfoDomainClass s = new SessionUserInfoDomainClass()
                    // populate your domain class above with the info you need. Examples:
                    s.user = session.user
                    s.controller = controllerName
                    s.save()
                }
            }
    }
}

然后,您可以轻松地拥有此 SessionUserInfoDomainClass 的一些 UI(即使使用scaffolg)来读取您想要的信息。

于 2013-08-16T15:07:13.670 回答