サポート » 使い方全般 » ブラウザを閉じると自動ログアウトしてほしい

  • 解決済 brtu5y4

    (@slime0099)


    ブラウザを閉じた時に、ログインのセッション情報を破棄し、ログアウトするようにしたいのですがいまいちやり方がピンときません。

    「ログイン状態を保持する」ボタンにチェックが入っていても上記のように、強制ログアウトしてほしいのですが、どのようなフックを使用すれば良いとかありますでしょうか?

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • ウィンドウを閉じるときにログアウトをさせる動作をJavaScriptで動作させてみてはいかがでしょうか。

    window.onbeforeunload = function(){
     //ここに画面とじるときに動作するコードを掲載する
    }
    

    これで閉じるときになにかしらの動きをさせることができると思いますので
    ログアウトを作用させるページへの移動をさせてみてはいかがでしょうか。

    http://"homepageDomain"/wp-login.php?action=logout

    このアドレスでログアウト画面がでてくるのでボタンを押したり、表示された
    ログアウトのリンクにリダイレクトするなどや

    http://"homepageDomain"/wp-login.php?action=logout&_wpnonce=??????????

    この?の部分にコードを渡せばページ遷移だけでログアウトするようなので
    くわしくはその関数についてのページをご参照いただけたらとおもいます。
    https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_nonce_field

    まだいろいろ議論の余地のある個所のようですが、画面に表示させずリンクを発動させたり
    ありがとうございましたページを用意するなどできそうなきがします。

    いかがでしょうか。

    アイデアだけで検証していませんが、、、

    ログイン処理の中で「ログイン状態を保持する」チェックボックスは $_POST['rememberme'] で表されます。これは wp_signon() の中で使われます。
    https://developer.wordpress.org/reference/functions/wp_signon/

    WordPress 標準のログインフォーム wp-login.php で「ログイン」ボタンを押すと、wp_signon() を呼び出してログイン処理を実行する前に、アクション 'login_form_login' が呼び出されます。
    https://developer.wordpress.org/reference/hooks/login_form_action/

    こういう処理順序なので、上記アクションにフックした自作関数の中で $_POST['rememberme'] をクリアすれば良いのではないかと思います。

    調べましたところログイン維持期間を設定するwp_set_auth_cookie関数内に
    auth_cookie_expirationというフィルターがあるらしく、
    この部分を変更すればログイン時間を変更できるのではないかと思います。
    (ログイン状態を保持する、しないにかかわらず適用されているようなのでまとめて指定できます)

    wp-include/pluggabele.php

    
    	if ( $remember ) {
    		/**
    		 * Filters the duration of the authentication cookie expiration period.
    		 *
    		 * @since 2.8.0
    		 *
    		 * @param int  $length   Duration of the expiration period in seconds.
    		 * @param int  $user_id  User ID.
    		 * @param bool $remember Whether to remember the user login. Default false.
    		 */
    		$expiration = time() + apply_filters( 'auth_cookie_expiration', 14 * DAY_IN_SECONDS, $user_id, $remember );
    
    		/*
    		 * Ensure the browser will continue to send the cookie after the expiration time is reached.
    		 * Needed for the login grace period in wp_validate_auth_cookie().
    		 */
    		$expire = $expiration + ( 12 * HOUR_IN_SECONDS );
    	} else {
    		/** This filter is documented in wp-includes/pluggable.php */
    		$expiration = time() + apply_filters( 'auth_cookie_expiration', 2 * DAY_IN_SECONDS, $user_id, $remember );
    		$expire = 0;
    	}
    
    • この返信は3年、 6ヶ月前にgogowebが編集しました。
    スレッド開始 brtu5y4

    (@slime0099)

    皆様、色々なお知恵を頂き誠にありがとうございます!!m(__)m

    それぞれ試してみて、また結果をこちらにご報告致します!

    少し時間ができたのでこれをプラグインにしてみました。

    <?php
    /*
    Plugin Name: gblsm Disable Rememberme
    Plugin URI: https://ja.wordpress.org/support/topic/ブラウザを閉じると自動ログアウトしてほしい/
    Description: ログインフォームの「ログイン状態を保持する」チェックボックスをクリアします。
    Author: gblsm
    Version: 0.1
    Author URI: https://ja.wordpress.org/support/users/gblsm/
    */
    
    add_action( 'login_form_login', 'gblsm_disable_rememberme' );
    
    function gblsm_disable_rememberme() {
    	unset( $_POST['rememberme'] );
    }
    
    スレッド開始 brtu5y4

    (@slime0099)

    gblsmさん

    おぉ、なんということでしょう。

    感謝でしかありません!
    有難うございますm(__)m

    早速試してみます。

    @slime0099 さん

    皆様、色々なお知恵を頂き誠にありがとうございます!!m(__)m
    それぞれ試してみて、また結果をこちらにご報告致します!

    いかがでしたか?

    スレッド開始 brtu5y4

    (@slime0099)

    ご報告が遅れすみません!

    gblsm様のソースでやりたいことが実現できました!

    誠に有難うございましたm(__)m

8件の返信を表示中 - 1 - 8件目 (全8件中)
  • トピック「ブラウザを閉じると自動ログアウトしてほしい」には新たに返信することはできません。