将身份验证Cookie设置为较短,但随后会随着每次页面加载而扩展

时间:2013-05-31 作者:benomatis

我试图绕过Wordpress处理身份验证cookie的不安全方式。我的意思是,只有在我建立一个会员网站的情况下,cookie才会在2周内过期,这显然是不好的,但同时,让它在用户登录时在15分钟内过期将非常恼人。

我已经进行了广泛的搜索和测试,并将Wordpress中围绕此内容的一些复杂代码林缩小到pluggable.php 文件位于wp-includes 文件夹并找到wp_set_auth_cookie 第652行(第3.5.1节)上的功能。现在,我可以更改时间,但是如上所述,这些时间固定为登录时间,而不是用户的最后一个活动。

我尝试添加此函数或wp_signon 函数将此函数用于我的标题,但它没有起到作用。

有没有插件或钩子或其他你能想到的东西可以帮我解决这个问题?

非常感谢您的帮助!

EDIT (June 6, 2013):

我在中尝试了以下代码functions.php 我的模板的文件,但它所做的一切是,当我重新加载页面时,它会将我注销,实际上它不会更新身份验证cookie。问题可能在于论点($userinnow, $remember, $secure) 顺便说一下,除了$userinnow.

/* Renew cookie at every page load */
function renew_wp_cookie() {

    global $current_user;
    get_currentuserinfo();
    $userinnow = $current_user->user_login;
    if (is_user_logged_in()) {
        wp_set_auth_cookie($userinnow, $remember, $secure);
    }
    else wp_clear_auth_cookie();

}

add_action(\'init\', \'renew_wp_cookie\');

1 个回复
SO网友:Stephen Harris

您不需要重写wp_set_auth_cookie(), 它允许您更改cookie的过期时间:

add_filter( \'auth_cookie_expiration\', \'wpse101378_change_expire_time\', 3 );
function wpse101378_change_expire_time( $expire, $user_id, $remember ){
    //The $remember variable indicates whether the user has elected
    //to be \'remembered\'.
    //By default, if true, WP sets expire to 14 days if false, 2 days

    //$expire is time in seconds

    return 24*60*60;
}
如果要清除当前cookie,可以使用wp_clear_auth_cookie() (参见source)

结束

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!