truman
(truman)
2025 年10 月 24 日 07:59
1
版本:v3.5.1
我的网站:https://www.example.com/forum
从主页登录将重定向到 https://www.example.com/
从非主页登录没有此问题。
日志
Processing by StaticController#enter as HTML Parameters: {"username"=>"****", "password"=>"[FILTERED]", "redirect"=>"https://www.example.com/forum/login"} Redirected to https://www.example.com/
1 个赞
安装 2025.12.0-latest 后,我们也遇到了同样的问题。
@here 抱歉,我想我已经成功重现并修复了这个问题
main ← login-redirect-and-subfolder-equals-boom
opened 10:46PM - 10 Dec 25 UTC
When Discourse is served from a subfolder (e.g., /forum), logging in from the lo… gin page itself would incorrectly redirect users to the root domain (/) instead of the subfolder root (/forum/).
The issue had two causes:
1. The login path check in `extract_redirect_param` used the Rails `login_path` helper which returns "/login" without the subfolder prefix. When the browser sent the full path "/forum/login", the check `starts_with?("/login")` failed to match, treating it as a valid redirect target instead of rejecting it.
2. The `enter` method didn't apply the subfolder prefix when falling back to the root path "/".
Fixed by:
- Building the full login path with `Discourse.base_path` for accurate matching in subfolder setups
- Wrapping the fallback "/" with `path()` in `enter` to respect the subfolder configuration
- Extracting redirect validation into `valid_redirect_uri?` for clarity
Ref - meta/t/386619
3 个赞