如何在纯 SQL 中创建新用户

感谢您提供 app.yml 的提示,这确实奏效了。

好的,我正在测试这个:

  1. 安装了 migrationpassword 插件
  2. 启用了“允许 migratepassword 使用不安全的密码”选项
  3. 通过 API 创建新用户
  4. 将密码哈希值添加到自定义字段中
    例如:insert into user_custom_fields (user_id, name, value, created_at, updated_at) values (2,‘import_pass’,‘2aee1c40222c7754d4534xxxxxxx’, now(), now());
  5. 尝试使用旧论坛的密码以新用户身份登录

它报错“用户名、邮箱或密码不正确”,但您上面的回答让我有些困惑。API 要求我必须提供密码才能创建用户(我刚才使用的是 MD5 哈希),但您说如果有密码,它会覆盖 MD5 哈希?

我不建议使用 md5 哈希值作为密码,因为它会被直接用作实际密码。如果您在创建用户时不需要密码字段,只需使用一个长的随机字符串即可。

我想表达的是,Discourse 会首先尝试通过将用户输入的密码与存储的密码进行匹配来登录用户。只有当该尝试失败时,migratepassword 插件才会介入,它会尝试通过将用户提供的密码与自定义字段进行匹配来验证密码是否正确,使用多种内置的替代哈希算法(md5 是其中之一)。

啊,抱歉,是我的错。我把密码哈希的错误值放到了 user_custom_fields 里。好的,这样问题就解决了,谢谢你……

……不过

即使我创建用户时设置了 activate 为 true,并且在管理后台查看用户时显示该用户已激活,但当我尝试登录时,系统却提示:

您暂时无法登录。我们之前已向您的邮箱 user@email.com 发送了一封激活邮件。请按照邮件中的说明激活您的账户。

为什么会这样?我本来是想避免这种情况的。

在我这里可以正常工作……你遇到了什么错误吗?

当我尝试访问该网站时,出现 502 错误,上次我等待了几个小时。但我运行命令的地方没有发现任何错误。

抱歉,我将把这个问题标记为“请不要这样做”。

风险太高,而且有很多副作用你很可能会忘记。