在 grails 中,我如何获得对所有当前会话的引用?

Posted

技术标签:

【中文标题】在 grails 中,我如何获得对所有当前会话的引用?【英文标题】:In grails, how do I get a reference to all current sessions? 【发布时间】:2010-09-10 08:42:22 【问题描述】:

我想在 grails 中列出管理控制器中的所有当前会话。获得参考的最简单方法是什么?来自控制器的会话集合?

【问题讨论】:

【参考方案1】:

这是 App-Info 插件的一项功能(默认禁用,但可以通过在 Config.groovy 中设置 grails.plugins.appinfo.useContextListener = true 轻松启用):http://grails.org/plugin/app-info

【讨论】:

@Burt 优秀插件,我从来不知道...今天肯定会调查 看起来很有前途!但是,在安装后尝试运行时出现以下错误:“错误:由于缺少依赖项,以下插件无法加载:[appInfo] - 插件:appInfo,依赖项:[dynamicController,googleVisualization,jquery]”我找到了一些对此进行了讨论,但没有解决我的问题。所述插件均已安装并列在 application.xml 中,我删除了 .ivy2 并重新安装,但仍然出现错误...使用带有 grails 1.3.4 的 STS 2.3.3.M2。你能给我指出一些方向吗? 您是否已经在使用 dynamicController、googleVisualization 或 jquery 插件之一? 我为你的插件安装了所有这些,但是我在我的项目中只使用了jquery插件。 我在 Linux 上重新安装了所有内容,现在可以正常工作了。该插件很酷,但在 Info / Sessions 中没有列出任何会话,即使我在另一个浏览器中与另一个用户登录也是如此。这可能是什么原因?如果重要的话,我正在使用 shiro 安全性。我没有设置 grails.plugins.appinfo.useContextListener = false。【参考方案2】:

有一种“groovy”方式可以在没有 SessionListener 的情况下执行此操作,生成的事件可以分配给闭包。您可以在地图/列表中捕获成功的会话,并在注销后删除会话或

Registering Callback Closures

rails.plugins.springsecurity.useSecurityEventListener = true
grails.plugins.springsecurity.onInteractiveAuthenticationSuccessEvent =  e, appCtx ->
   // handle InteractiveAuthenticationSuccessEvent


grails.plugins.springsecurity.onAbstractAuthenticationFailureEvent =  e, appCtx ->
   // handle AbstractAuthenticationFailureEvent


grails.plugins.springsecurity.onAuthenticationSuccessEvent =  e, appCtx ->
   // handle AuthenticationSuccessEvent


grails.plugins.springsecurity.onAuthenticationSwitchUserEvent =  e, appCtx ->
   // handle AuthenticationSwitchUserEvent


grails.plugins.springsecurity.onAuthorizationEvent =  e, appCtx ->
   // handle AuthorizationEvent

【讨论】:

以上是关于在 grails 中,我如何获得对所有当前会话的引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 grails 中使用会话

Grails 安全问题和搜索引擎优化

如何在当前会话中获得隔离级别?

在 grails 中维护会话

如何使用spring security在grails中获取所有当前登录用户的列表(包括rememberme cookie)

使用户/会话信息在 Grails 中的应用程序中可用