我试图绕过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\');
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)