Deleting cookie to logout

时间:2016-05-07 作者:IAmJulianAcosta

如果我删除wordpress_logged_in_47d1523b... 使用javascript的cookie?还有什么额外的东西wp_logout

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

您可以使用注销当前用户wp_logout() function:

我认为这是更好的方法。wp_logout() 销毁当前会话,清除授权cookie和调用wp_logout 行动此外,它是一个可插入功能,这意味着可以通过插件重新定义。你可能会错过一些重要的东西,尤其是与其他插件结合使用时。

如果要从JavaScript注销,可以执行wp_logout() 使用ajax(代码未经测试,只是作为基本示例写在这里):

add_action( \'wp_enqueue_scripts\', \'cyb_enqueue_scripts\' );
function cyb_enqueue_scripts() 
    wp_enqueue_script( \'cyb-ajax-logout\', \'url_to_js_script\', array( \'jquery\' ) );
    wp_localize_script( \'cyb-ajax-logout\', \'ajax_logout_params\',
        array(
            \'ajax_url\'     => admin_url( \'admin-ajax.php\' ),
            \'logout_nonce\' => wp_create_nonce( \'cyb-logout-nonce\' ),
        )
    );
}

add_action(\'wp_ajax_cyb_logout\', \'cyb_ajax_logout\');
function cyb_ajax_logout(){
    if( check_ajax_referer( \'cyb-logout-nonce\', \'logout_nonce\', false ) ) {
        wp_logout();
        $reponse = array(
            \'message\' => __( \'You have been logged out.\', \'cyb-textdomain\' )
        );
        wp_send_json_success( $reponse );
    } else {
        // Ajax referer is wrong
        $reponse = array(
            \'message\' => __( "Unknown referer. You couldn\'t been logged out.", \'cyb-textdomain\' )
        );
        wp_send_json_error( $reponse );
    }
}
和js:

jQuery(document).ready(function($){
    var data = {
        action: \'cyb_logout\',
        logout_nonce: ajax_logout_params.logout_nonce
    };
    $.getJSON( ajax_logout_params.ajax_url, data, function( response ) {
        if( response.success ) {
            // User has been logged out
        }
    });
});

SO网友:N00b

wp\\u注销是否还有其他功能?

正如我在评论中所说,WordPress在wp_logout.

  1. wp_destroy_current_session()
  2. wp_clear_auth_cookie()

wp_clear_auth_cookie() 删除与身份验证关联的所有Cookie。这是您希望使用JavaScript执行的操作。

然而,还有wp_destroy_current_session(). 此函数用于从数据库中删除当前会话令牌,这将引出下一个问题。。

如果我删除wordpress\\u logged\\u in\\u 47d1523b,可能会出现问题。。。使用javascript的cookie?

不,不会有任何问题,因为用户可以手动删除会话和cookie,但这不会破坏网络。只要删除了正确的会话,一切都会按计划进行。

现在您可能想知道:数据库中的会话令牌怎么样?这不再重要,因为会话已被破坏。一旦用户再次登录,它将被新令牌覆盖。

<小时>And now the bad news: 如何仅使用JavaScript删除会话?会话键和值都是生成的,您无法仅使用JavaScript来定位正确的键和值。对于每个用户和每个会话,会话密钥和值都是不同的。

相关推荐

Update user meta on logout

我已经看到了一些答案,但这些问题已经有好多年的历史了,在尝试了他们的回答之后,我没能让它起作用。我需要在注销过程中更新用户元数据,特别是在用户空闲时间过长时发生的自动注销过程。我正在使用下面的代码,但用户元没有更新。add_action(\'clear_auth_cookie\', \'t_o_update\'); function t_o_update() { $user = wp_get_current_user(); update_user_meta($user-&g