カテゴリ | エラー・トラブル |
サマリ | 認証成功後のリダイレクト先について |
バージョン | 1.5.4(EUC) |
投稿者 | 越前 |
状態 | 質問 |
投稿日 | |
閲覧に認証をかけた場合ですが、認証成功後のリダイレクト先が誤っている?ようで延々と認証ページに飛ばされてしまうようです。
こちらでコードを確認したところ、loginform.inc.phpの42行目を以下の通りissetがfalseの場合にindex.phpを返すようにすれば(少なくとも認証後のリダイレクトについては)正常に動いているように見えました。
$url_after_login = isset($_GET['url_after_login']) ? $_GET['url_after_login'] : '';
↓
$url_after_login = isset($_GET['url_after_login']) ? $_GET['url_after_login'] : 'index.php';
修正箇所が正しいかどうかも含めて、お手数ですがご確認いただければと思います。
- 上記ではなく、loginform.inc.phpの45行目のifブロックの中を$url_after_loginに書き換えることでも正常に動作することを確認しました。処理の流れ的にもこちらが本来想定していたものでしょうか。 -- 越前
- PukiWiki 1.5.4 (UTF8版/EUC-JP版 両方; Windows 10; XAMPP 8.2 (PHP8.2) ) で試してみましたが、再現しませんでした。どのような構成で動かされていますか? 配布されている1.5.4そのままでも再現しますでしょうか?なにか独自カスタマイズをいれていますか? 配布構成に対して pukiwiki.ini.php 「 $read_auth = 1; 」「 $read_auth_pages に '##' => 'foo'」の2箇所を変更したところ、期待通りに認証が動作しました -- umorigu
- 1.5.4のEUC版を初期設定のまま認証の設定のみ( $read_authと$read_auth_pagesの設定のみ)を入れ、WindowsのApache(2.4.58)+PHP(8.2.12)で動かした場合は確かに正常に動作していました。一方、DockerでNginxとphp-fpmを連携させた場合はFirefoxでは認証成功後に認証ページに遷移するのを延々と繰り返し、Chromeでは真っ白な画面に遷移しました。 -- 越前
- 書き忘れました、Nginxは1.25.3、php-fpmは8.2.12です。また、↑で書いた通りloginform.inc.phpの45行目を$page_after_loginへの代入ではなく$url_after_loginへの代入(頭に?をつける)とするとNginxとphp-fpmの構成でも正常に動作しました。 -- 越前
- 正確なところは不明なのですがDockerの場合、リバースプロキシ配下のような動作になり、サーバー側で「クライアントから見えているURL」を自動取得するのが容易ではありません。URLの自動取得に失敗した場合、リダイレクトがうまく動きません。動作させるために pukiwiki.ini.php 120行目あたりの $script に「ブラウザから見えるトップページのURL」を設定してください。通常は https:// で始まり "/" で終わるURLです -- umorigu
- ありがとうございました!pukiwiki.ini.phpの$scriptにURLを設定したところ正常に動作するようになりました。合わせて左上のpukiwikiアイコンやトップのリンクURLも空だったものがちゃんと入るようになり、リンクが機能するようになりました。page_after_loginへの代入処理を書き換えて正常に動作していたのはたまたまだったのですね… -- 越前
- 解決してよかったです。そうですね。それで動いたのはたまたまだと思います。 nginx をお使いということなので (思い出して) nginx の設定例も更新しました -- umorigu
- Dockerやリバースプロキシ環境での設定のドキュメントは足りていないので、どこかにまとめようと思います dev:BugTrack/2605 dev:BugTrack/2577 -- umorigu
- アドバイスに加え追加の対応までありがとうございます。また何かDocker特有の?変わった挙動等が見つかりましたら(他の方のトラブルシューティングの参考になるかどうかわかりませんが)報告したいと思います。 -- 越前