【问题标题】:Get session creation time in Grails + Apache Shiro在 Grails + Apache Shiro 中获取会话创建时间
【发布时间】:2015-12-29 20:26:27
【问题描述】:

在我的应用程序中有这个文本 Last seen: 字段显示当前用户登录系统的时间(例如 5 秒前、4 小时前、3 天前等)。现在我要这样做,我需要确定:

  • Apache Shiro 执行登录的时间;或
  • 当前 Grails 会话的创建时间。

然后将其减去当前时间。但是如何访问两者中的任何一个的创建时间?或者有没有更好的方法来实现这一点而不使用上面提到的?

【问题讨论】:

    标签: grails httpsession


    【解决方案1】:

    在你的控制器动作中你可以这样写:

    class MyController {
    
        // Considering this action is secured for logged in user only
        def foo() {
            long currentMillis = new Date().getTime()
            long sessionCreationMillis = session.getCreationTime()
    
            long loggedInFor = currentMillis - sessionCreationMillis
            println "User has been logged in for $loggedInFor miliseconds"
        }
    }
    

    现在,您了解了用户登录的时间(以毫秒为单位)。此外,您可以使用 TimeUnit 库将毫秒转换为其他值。

    或者,如果您打算在客户端执行此操作,也可以使用任何 Javascript 库,例如 this

    【讨论】:

      【解决方案2】:

      我不知道 Apache Shiro,但我可以告诉你如何获得 session creation time

      其实很简单,在HttpSession中有一个叫getCreationTime()的方法。这是doc

      您可以在控制器中可用的session attribute 上调用此方法。这会将时间以毫秒为单位返回为long

      【讨论】:

        猜你喜欢
        • 2014-11-24
        • 2014-03-09
        • 2013-07-14
        • 1970-01-01
        • 2013-12-06
        • 2012-06-02
        • 1970-01-01
        • 2018-06-02
        • 2016-12-22
        相关资源
        最近更新 更多