【问题标题】:Extend auth_cookie_expiration cookie in WordPress在 WordPress 中扩展 auth_cookie_expiration cookie
【发布时间】:2018-02-12 08:10:54
【问题描述】:

我们的一位客户希望拥有一个特定用户角色的用户在两周内保持登录状态。他想在登录时自动选中“记住我”复选框。

使用https://developer.wordpress.org/reference/hooks/auth_cookie_expiration/ 函数并添加一些 JS 以自动选中登录页面上的“记住我”复选框,我已经能够解决 90% 的问题。

我的问题:

  1. cookie 似乎是在首次登录时设置的(正确)
  2. 但是当我第二天返回时,cookie 没有更新
  3. 例如如果我在 1 月 1 日登录,我应该在 1 月 15 日之前保持登录状态
  4. 当我在 1 月 2 日登录时,cookie 应该被刷新/延长到 1 月 16 日

您知道这个扩展是否以及如何实现?

我的问题似乎和how to change session expire time in wordpress上的这个类似:

查看最后一个 cmets:“我相信此解决方案不会解决问题的‘不活动’部分。此方法将更改 cookie 过期时间,但无论用户是否处于活动状态,用户都将被注销。WP 确实似乎没有更新用户活动的 cookie 过期时间 - 它在登录时设置一次"

【问题讨论】:

    标签: php wordpress cookies


    【解决方案1】:

    您可以在用户访问任何页面时执行此操作,您需要验证当前用户是否已登录并满足您所需的用户角色,然后更新它的 cookie ...

    /* Renew cookie at every page load */
    function renew_wp_cookie() {
        //Return early if its on login/logout page
        if(in_array($GLOBALS['pagenow'], array('wp-login.php'))) return;
    
        if (is_user_logged_in() && current_user_can('user_role')) {
            $current_logged_user = get_current_user_id();
            wp_set_auth_cookie($current_logged_user, true);
        }
    
    }
    
    add_action('init', 'renew_wp_cookie');
    

    【讨论】:

    • 它可以工作,但它似乎在登录时给我带来了问题。因此我添加了一个额外的条件来确保代码不会在注销页面上运行。我认为这是发生的事情:代码强制 cookie 被更新,因此它阻止了用户注销 if (is_archive() || is_front_page() ) { if (is_user_logged_in()) { $current_logged_user = get_current_user_id(); wp_set_auth_cookie($current_logged_user, true); } }
    • 您可以检查当前页面是否为登录页面,然后提前返回功能,包括if(in_array($GLOBALS['pagenow'], array('wp-login.php'))) return;...我已经编辑了答案,请查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2014-02-07
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    相关资源
    最近更新 更多