@k_o_k (k o)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

wordpressのカスタム投稿でユニークなIDとPWDのBasic認証を付けたい

Q&A

Closed

前提・実現したいこと
wordpressのSmart Custom Fieldsを使って、カスタム投稿を作りました。
カスタム投稿で作成したページに個別でユニークなBasic認証を付けたいと思っています。

以下のページを参考にBasic認証を設置
https://takayakondo.com/individual-basic-authentication/

このBasic認証のIDとPWDの箇所
"admin" => "12345"
のIDとpwdの文字列をカスタム投稿のカスタムフィールド名に置き換えました。

IDとPWDを直接文字列で記載した場合はBasic認証は問題なく動作。
ところが、以下のように動的になるように修正したところ、

<?php
$mh_id = SCF::get('mh_id');
$mh_pwd = SCF::get('mh_pwd');

if(!is_home()):
if(get_post_type() === 'files'):

$userArray = array(
//"admin" => "1234"
"${mh_id}" => "${mh_pwd}"
);

basic_auth($userArray);
endif;
endif;
?>

MAMPのローカルでは問題なく動作するのですが、サーバーにアップした状態だと認証されませんでした。
調べてもなぜローカル上では問題無いのに、サーバー上では不具合があるのかわかりません。
サーバーにアップした場合でもベーシック認証が効くようにしたいです。

発生している問題
正しいIDとPWDを入力すると、MAMPのローカルでは正常にBasic認証が効くのですが、サーバーにアップした状態でIDとPWDを入力すると認証されません。

試したこと、その他備考
(1)MAMPのローカルで試したところ問題なくbasic認証は動作する。
しかし本番サーバーだと不具合が起きる。

(2)
"${mh_id}" => "${mh_pwd}"
をコメントアウトにして
(コメントアウトしている→)"admin" => "1234"を表示にすると、Basic認証は問題なく動くのでBasic認証のソースコード自体は問題なさそう。

ローカルでは問題なく動作するのに、サーバーにアップすることでベーシック認証が効かなくなる理由がわからない。

WPバージョンやプラグインについて
Wordpress5.5
Smart Custom FIelds

0 likes

1Answer

本番サーバーのApacheでBasic認証が有効になっていないのだと思います。

.htaccess
AuthUserfile /フルパス/.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

本番サーバーのapacheのエラーログを確認するか、
phpのエラーログを確認してみてください。

0Like

Your answer might help someone💌