[WordPress] WP ユーザー認証を BASIC 認証に利用する

<?php
function basic_auth(){
nocache_headers();
if ( is_user_logged_in() )
return;
// WordPress のユーザー認証で BASIC 認証ユーザー/パスワードをチェック
$user = isset($_SERVER["PHP_AUTH_USER"]) ? $_SERVER["PHP_AUTH_USER"] : '';
$pwd = isset($_SERVER["PHP_AUTH_PW"]) ? $_SERVER["PHP_AUTH_PW"] : '';
if ( !is_wp_error(wp_authenticate($user, $pwd)) ) {
return;
}
// BASIC 認証が必要
header('WWW-Authenticate: Basic realm="Please Enter Your Password"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required';
die();
}
add_action('template_redirect','basic_auth');

view raw
wp-basic-auth.php
hosted with ❤ by GitHub

ただし、Nginx のリバースプロキシキャッシュとか WP Super Cache が有効になってる場合は、正常に動作しないので注意

追記:
最初に nocache_headers(); を追加したので、Nginx のリバースプロキシキャッシュにキャッシングされなくなりました。
WP Super Cache については知らん

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中