ログイン時に存在しない通知ページにリダイレクトされる問題

こんにちは、Discourse の新規ユーザーです。

バージョン 2.5.0.beta3 を使用しており、管理者設定からバッジやプライベートメッセージなど、不要な機能を無効化するようカスタマイズしました。コードや生設定ファイルの変更は行っておらず、SSO も使用していません。

気づかないうちにログアウトして再度ログインすると、/notifications?recent=true&limit=5 にリダイレクトされ、「Oops! That page doesn’t exist or is private.」というエラーが表示されてしまいます。

この動作を制御する設定がどこにあるのか見つけられませんでした。私のユーザー設定では「デフォルトのホームページ」が「カテゴリ」に設定されています。複数のアカウントで試しましたが、すべて同じ挙動を示します。

ご助力いただければ幸いです!

2.5.0.beta3 にアップグレードした直後に、全く同じ問題が発生しています。
ログイン時に、選択されたユーザーのホーム設定ページではなく、notifications?recent=true&limit=5 へリダイレクトされ、404 エラーが表示されます。

ユーザーの通知への正しい URL は /u/username/notifications?recent=true&limit=5 です。

いずれにせよ、ユーザー設定が反映されるはずです。ログイン時にユーザー ID が認識されていないようです(ユーザー名でのログイン)。しかし、404 ページを表示した後、実際にはログイン状態になっています。

それはとても奇妙ですね。私は直前にサイトをアップグレードしましたが、その問題は発生していません。

これを引き起こす可能性のあるプラグインやテーマを実行されていますか?safe-mode で解決しますか?

サイトの URL を共有していただけませんか?

これに影響を与えるテーマやコンポーネントは特に認識していません。2.4 から 2.5 への移行時に 1 つのカスタムコンポーネントを無効にしましたが、これは無関係です(グループのレイアウトをリスト形式に変更します)。safe-mode とは何か、またどのように使用すればよいでしょうか?

サイト URL は、公開アクセスがないため役立ちません。

safe-mode は何の効果もないようですが、これらの手順に従ってセーフモードが有効になったとは確信できません。

サイト URL の末尾に /?safe_mode を追加するだけではオプションページが表示されず、ログインページが再読み込みされるだけでした。また、/?safe_mode=no_custom&no_plugins&only_official を使用しても同様で、サイト上には何の変化も見られませんでした。

セーフモードを有効にできました(ログインすると、そのオプションが表示されました)。すべてにチェックを入れてログアウトし、再度ログインしました。

ログイン後、/notifications?recent=true&limit=5 というページにリダイレクトされました。

なぜですか?

なぜ一貫性がないのですか(時には正しい場所に移動することがあります)。

この URI はログインページのクッキーに含まれています。

進展はありますか?私たちも同じ問題に直面しています。あるサーバーでは発生しますが、同じプラグインとコンポーネントのセットを持つ別のテストサーバーでは発生しません。

OAuth2 プラグインは両方のサーバーにインストールされていますが、現在は無効化されています(アップグレード前からです。問題のあるサーバーでは、アップグレード中に OAuth2 プラグインが有効化されており、アップグレード後に無効化された可能性があります。sysadmin に作業の順序を確認してもらうのを待っています。

OAuth2 はアップグレード中にインストールされました。それ以降は無効化されたままです。

OAuth2 プラグインはインストールされていますか?

サブフォルダインストールをお使いですか?

サブフォルダインストールとは何ですか?
私たちは標準的なインストールを行っています。コンテナフォルダ内に app.yml ファイルがあり、root ユーザーとして launcher というスクリプトを実行して Discourse を起動します。

2.5.0.beta3 へのアップグレード後、同じ問題が発生しています。
セルフホストの標準インストールで、公式プラグインのみを使用しています。
Google OAuth は設定済みです。

私のテスト環境でも同様の現象(あるいはそれに近いもの)が発生していることを確認しました。


Testing: https://smoke-test.redacted.invalid/
Starting Discourse Smoke Test for https://smoke-test.redacted.invalid/
PASSED: go to site - 1119ms
PASSED: expect a log in button in the header - 266ms
PASSED: open login modal - 85ms
PASSED: login modal is open - 8ms
FAILED HTTP REQUEST TO https://smoke-test.redacted.invalid/notifications?recent=true&limit=5 Status is: 403
PAGE LOG: Failed to load resource: the server responded with a status of 403 ()
FAILED HTTP REQUEST TO https://smoke-test.redacted.invalid/logs/report_js_error Status is: 429
PAGE LOG: Failed to load resource: the server responded with a status of 429 ()
PASSED: type in credentials & log in - 363ms
PASSED: is logged in - 1606ms

インスペクタを確認すると、ログインモーダルを開いた瞬間に /notifications?recent=true&limit=5 へのリクエストが発生していることがわかりますが、リダイレクトは発生していません。

これは次から来ていると思います

はい、@featheredtoast

迅速な修正がコミットされました:

これは約 15 分以内に tests-passed に反映されるはずです。

私の環境でも、修正が問題を解決したことを確認しました。
迅速な対応をありがとうございます!