【问题标题】:Joomla 2.5 session timer - when session is extending?Joomla 2.5 会话计时器 - 会话何时延长?
【发布时间】:2013-09-05 10:18:45
【问题描述】:

我尝试为前端用户编写 Joomla 会话倒计时。 但我无法识别会话何时延长。

我现在的代码

<body data-sesja="<?php echo JFactory::getSession()->getExpire() ; ?>">

还有 JS

//getting session time
var licznik = $('body').data('sesja');

//PROBLEM IS HERE - becouse not all events extenting the session time
$('body').on('mousedown keyup', function(){
     licznik = $('body').data('sesja');
});

//creating counter object
var licznikObj = window.setInterval(function() {
    licznik--;
    $('.licznik').text(licznik);
    if (licznik == 0) {
         window.clearInterval(licznikObj);
         $('.licznik-info, .licznik').each(function(){
             $(this).remove();
         });
         $(".licznik-msg").text("Twoja sesja wygasła! Zaloguj ponownie.");
    }
 }, 1000);

所以我的问题是:女巫事件延长了 Joomla 2.5 的会话时间?

【问题讨论】:

  • 也许我弄错了,但是是什么让您认为客户端事件对 Joomla 会话到期有任何影响?会话由 HTTP 请求更新/扩展(包括通过 AJAX 的 XHR)。
  • 是的,谢谢,这正是我想知道的。但现在是另一个问题,是否有任何选项可以全局检查该请求何时出现?现在我知道 MosetsTree 组件在添加“新列表”中有两个 Ajax/JSON 请求,另一个在我制作的模块女巫中,但是例如当我去“编辑我的个人资料”时,会话永远不会过期。

标签: javascript session joomla timer counter


【解决方案1】:

因为我不是你想要做的,但我将简要描述会话在 Joomla 中的工作方式。

默认会话是在用户第一次访问网站时创建的。

当用户登录时,会话与它的用户记录耦合在一起,这样框架会在下面的请求中自动在此处进行身份验证。这些会话 cookie 通常会在没有过期时间的情况下发送给客户端,因此在浏览器会话结束之前(在客户端)都是有效的。

如果用户勾选“记住我”框,则会根据您的配置设置明确的过期时间,通常为未来几天。

另一方面,在服务器端,无论客户端存储什么,都会存储过期时间。默认会话长度为 15 分钟(900 秒)。

如果用户在此期间发出另一个请求,则会话将延长另一个时间段(从当前请求的时间开始)。

有一个行为声明 (JHtml::_('behavior.keepalive');) 生成一个脚本,该脚本通过重复向服务器发送 AJAX 请求来防止会话过期,通常在设置过期前 1 分钟。

这种行为在前端经常使用。

我希望这将帮助您获得您想要的结果。我无法查看我不拥有的商业扩展的特定视图的行为。

【讨论】:

    猜你喜欢
    • 2012-02-08
    • 2016-04-02
    • 2019-02-24
    • 2012-11-14
    • 1970-01-01
    • 2014-11-23
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多