2016-05-26 84 views
1

我有Grails应用程序并安装了spring security core插件。我想注销另一个登录用户。 我能够使用sessionFactory获取所有登录的用户列表。Grails注销另一个登录用户

需要帮助。

请给我详细的解释。

我跟着这thread,但是,我不能通过只是无效的会议注销。

回答

1

无效应该起作用。 此代码是Grails的2.3.5 100%的工作,弹簧安全核心:2.0.0

def sessions = ContextListener.instance().getSessions() 
    def sessionToInvalidate = sessions.find{it.id == someId} 
    sessionToInvalidate.invalidate() 

更新:ContextListener不是非标准类。但是,它很容易实现。你可以看到它是如何在应用信息的Grails实现插件here

+0

正如我评论在https://stackoverflow.com/questions/37461557/how-to-get-httpsession-from-sessionid-in-grails-application没有执行'ContextListener'这不是一个有用的答案 –

+0

sessionToInvalidate.invalidate()不会注销用户。所以我用sessionToInvalidate.setMaxInactiveInterval(1) –

0

@Taras和@Burt 感谢

我跟着作为你们俩在这个答案建议。工作正常。

但无效mothod不会使会话失效,而另一个用户将继续使用应用程序。我不知道为什么这个怪异的行为。

所以我用sessionToInvalidate.setMaxInactiveInterval(1)。这和我预期的一样。