wp_set_auth_cookie() の使い方|説明・引数・注意点

説明

wp_set_auth_cookie() は、ユーザーの認証Cookieを設定し、ログイン状態にする関数です。

基本構文

wp_set_auth_cookie( int $user_id, bool $remember = false, bool|string $secure = '', string $token = '' ): void

引数

  • $user_id:ユーザーID
  • $remember:ログイン状態を保持するか
  • $secure:SSL専用Cookieにするか
  • $token:セッショントークン

戻り値

戻り値はありません。

使い方(サンプル)

wp_set_current_user( 5 );
wp_set_auth_cookie( 5 );

注意点

  • 出力が始まる前(headers already sent エラーを避ける)に呼びます。
  • 認証処理の誤用はセキュリティ上の問題になります。信頼できる検証を行った後にだけ使います。

実務での使いどころ

  • 認証したユーザーを、ログインした状態にするとき(独自のログイン処理)。
  • 外部サービスの認証後に、WordPressへログインさせるとき。

よくあるミスと対処

  • 出力を始めたあとに呼び、「headers already sent」になり、Cookieが設定されない。
  • パスワードなどの認証をせずに、呼んでいる。この関数は、認証を行わない。
  • wp_set_current_user() を併せて呼んでいない。そのリクエストの間は、まだログインしていない状態になる。

NG例

wp_set_auth_cookie( $user_id ); // 認証なしに、ログイン状態にしている

OK例

$user = get_user_by( 'email', $email );
if ( $user && wp_check_password( $password, $user->user_pass, $user->ID ) ) {
	wp_set_current_user( $user->ID );
	wp_set_auth_cookie( $user->ID );
}

使い分け早見表

関数 役割
wp_set_auth_cookie() ログインのCookieを設定する(認証は行わない)
wp_signon() 認証し、ログインする(Cookieも設定)
wp_set_current_user() そのリクエストの間だけ、現在のユーザーを設定する

関連項目

wp_set_current_user()、wp_signon()

公式リファレンス:wp_set_auth_cookie() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました