【问题标题】:Catching the session expiry in pharo seaside 3.2在pharo seaside 3.2中捕获会话到期
【发布时间】:2017-05-06 18:50:57
【问题描述】:

如何在 Pharo Seaside 3.2 中捕获会话到期通知? 会话到期时,我需要将用户从停用用户列表中删除。

【问题讨论】:

    标签: smalltalk pharo seaside


    【解决方案1】:

    您可以继承WASession 并通过配置告诉Seaside 使用您的会话(请参阅WAApplicationConfiguration>>describeOn:)。在你的子类中实现#unregistered。此方法将在会话过期时执行(请注意,这可能不会立即发生,而只会在会话缓存触发的对同一应用程序的下一次请求时发生)。

    【讨论】:

    • 348/5000 我试过了。我遇到的问题是:当会话超时结束并且用户尝试再次登录时,#unregistred 方法尚未执行。我使用此方法调用从连接用户列表中删除用户的方法 (#logout))。这样,用户仍然显示为已连接。
    • 为什么不在会话中存储用户?
    • 我存储每个连接的用户以避免双重登录。如果我将它存储在会话中,我不知道如何从另一个会话访问它......也许是我对使用海滨的方案的无知,但应该能够捕获会话的死亡,例如呈现过期页面。然而,我读到的所有东西显然都已经过时了。
    • 1.您可以通过在应用程序类(WAApplication 的子类)中覆盖 #handleExpired: 来对过期做出反应。 2. 我不明白为什么用户一次登录多个会话很重要。当您同时使用两个浏览器访问页面时,甚至会很方便。
    • 非常感谢!!我以这种方式(部分)解决了它。我希望该处理程序属于 Session 类...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多