Javascriptを使用してwordpress_logged_in_47d1523b...
cookieを削除した場合、潜在的な問題はありますか? wp_logout
がこれ以外に何かすることはありますか?
現在のユーザーは wp_logout()
function でログアウトできます。
私はそれがずっと良いアプローチだと思います。 wp_logout()
は現在のセッションを破棄し、認証クッキーをクリアしてwp_logout
アクションを呼び出します。また、これはプラグイン可能な機能であり、プラグインによって再定義することができます。特に他のプラグインと組み合わせて作業するときは、重要なものを見逃すことがあります。
JavaScriptからログアウトしたい場合は、ajaxを使用してwp_logout()
を実行できます(コードはテストされていません。基本的な例としてここに書かれています)
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
}
});
});
Wp_logoutに追加の何かがありますか?
私のコメントで述べたように、WordPressはwp_logout
に対して2つの関数を実行します。
wp_destroy_current_session()
wp_clear_auth_cookie()
wp_clear_auth_cookie()
は、認証に関連するすべてのクッキーを削除します。これがJavaScriptでやりたいことです。
しかしwp_destroy_current_session()
もあります。この関数はデータベースから現在のセッショントークンを削除します。これにより、次の質問に進みます。
Javascriptを使用してwordpress_logged_in_47d1523b ... cookieを削除した場合、問題が発生する可能性がありますか?
いいえ、ユーザーが手動でセッションとCookieを削除することはできますが、問題はありませんが、Webが破損することはありません。正しいセッションを削除している限り、すべては計画どおりに機能します。
今、あなたは疑問に思うかもしれません:データベースのセッショントークンはどうですか?セッションが破壊されるので、それはもう問題ではありません。ユーザーが再度ログインするとすぐに新しいトークンで上書きされます。
そして今度は悪いニュースです。JavaScriptだけでセッションを削除するのはどうですか?セッションキーと値は両方とも生成されるので、JavaScriptだけで正しいものをターゲットにすることはできません。セッションキーと値は、ユーザーごとおよびセッションごとに異なります。