[求助] 无法登录,显示错误 "BAD CSRF"

大家好,

我在服务器上安装了 Discourse,它一直运行良好,没有任何问题。然而,在最新的一次更新后,我发现所有用户账户(包括管理员账户)都无法登录。

一段时间后,我怀疑是插件的问题,于是移除了所有插件,并运行了 ./launcher rebuild app 以恢复为纯净的原生版本,但问题依旧没有解决。目前的情况是,我们的网站似乎处于只读模式,除了浏览帖子外无法执行任何操作。

在提交任何登录表单时,都会显示以下信息,但我们完全不知道这意味着什么:

我们的网站位于 https://discuss.stickyricelove.com,我们是一家非营利组织,致力于在香港为青少年提供性教育,解答他们的疑惑和困惑。

非常期待尽快得到回复:weary::sob:
谢谢。

It looks like one of your plugins is not compatible with the current version of Discourse. I suggest removing all third party (non-official) plugins and rebuilding.

It is already a clean build without plugins, only with the docker_manager. Should I remove that too?

Hmm, did you try upgrading at the command line?

Please SSH into your server and run:

cd /var/discourse
git pull
./launcher rebuild app

I have already tried this many many times, and it still shows the same error.

I’m now removing the docker_manager and rebuilding it.

Is this an install that followed our official install guide? Any errors in the rebuild?

Yes I have followed the exact steps carefully, and it’s a “no” for the errors. It builds smoothly that I can’t even tell what has gone wrong.

Will extract the backups and rebuild the VPS if nothing works out today. :sob:

Do you have this behind cloudflare or anything like that? @sam do you see anything in the pictured JS console errors that would indicate what is the issue?

We have consider that issue too, therefore a month ago we completely disabled all Cloudflare features, will also consider moving out Cloudflare since it brings enough troubles for us.

Will there be any override that I can force my current session as an admin? In that way I can get into the backend and see what’s the log telling :worried:

Hello,

I manage a small discourse forum for an opensource project and we have something that looks like the same problem. The error is exactly the same with google chrome, but is different with firefox : the login dialog works normally, the page is refreshed but it does not log me in (screenshots bellow).

It’s a dedicated host, and it doesn’t change much if I rebuild with beta, previous beta, or “tests-passed”. We don’t use cloudfare, but it’s behind a nginx reverse proxy (nothing too fancy). The discourse container is http, but nginx serves it in https through the reverse proxy, if that makes any difference.

I would appreciate any idea if there is something I can try.

Regards,

Stephane

@codinghorror @sam Will that be an upstream bug?

We have no repro of this, so it is likely something about your local setup.

我们正在重建 VPS 并安装全新的 Discourse,随后发生了以下情况并卡住了一段时间:

Is there a solution? We have the same problem…

It appears to us an upgrade issue. We have backup away the data, and performed a clean install and backup restoration.

However other than that, I have no idea what caused this issue.

Hello. I tried to run it without the nginx reverse proxy and it did not resolve the issue. Will run a reinstall tomorrow except if anyone think about something that could help by that time.

I noticed that by default, the launcher rebuild script was checking out the “tests-passed” version. Is it a bit dangerous ? should it be beta ? When I update from the admin web screen, it update to the most recent beta instead ?

I had to launch a rebuild before the problem appeared because the host ip from inside the container changed. The host is also my mailserver, and the mail config was in app.yml.

Is it possible that with the rebuild, I updated to a version that somehow corrupted the config ? (I launched the rebuild around 11/02/2016 07:00 PM if that’s any help).

Regards,

Stephane

In future if you feel your issue was not resolved, flag to reopen topic and DON’T accept an answer on the topic.

If you are running a reverse proxy 99.999% the issue is that you are not passing headers right to discourse.