在Grails中获取会话创建时间+;阿帕奇西罗酒店

在Grails中获取会话创建时间+;阿帕奇西罗酒店,grails,httpsession,Grails,Httpsession,我的应用程序中有一个文本最后一次出现:字段,显示当前用户登录系统的时间(例如5秒前、4小时前、3天前等)。现在我要做的是,我需要确定: ApacheShiro执行登录的时间;或 创建当前Grails会话的时间 然后将其减去当前时间。但是我怎样才能访问这两个的创建时间呢?或者有没有更好的方法来实现这一点,而不是使用上面提到的方法?我不知道ApacheShiro,但我可以告诉您如何获得会话创建时间 实际上非常简单,在HttpSession中有一个名为getCreationTime()的方法。这是

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

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

然后将其减去当前时间。但是我怎样才能访问这两个的创建时间呢?或者有没有更好的方法来实现这一点,而不是使用上面提到的方法?

我不知道ApacheShiro,但我可以告诉您如何获得
会话创建时间

实际上非常简单,在
HttpSession
中有一个名为
getCreationTime()
的方法。这是你的电话号码


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

在控制器操作中,您可以这样编写:

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"
    }
}
现在,您得到了用户登录的时间(毫秒)。此外,您可以使用该库将毫秒转换为其他值

或者,您也可以使用任何Javascript库,就像您计划在客户端这样做一样