# 如何通过API删除用户帐户而不被IP封锁

**URL:** https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959
**Category:** SSO
**Tags:** rest-api
**Created:** [2024年七月4日 07:59 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959 "2024-07-04T07:59:23Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [2024年七月4日 07:59 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/1 "2024-07-04T07:59:23Z")

</div>

我们已将 Discourse 与另一个应用程序集成，用户在 Keycloak 中进行管理。当用户在另一个应用程序中删除其帐户时，我们也会通过 API 在 Discourse 中将其删除。  
这可以正常工作，但用户的 IP 随后会在 Discourse 中被自动阻止，因此无法从同一 IP 登录其他用户。  
可以关闭此 IP 阻止功能吗？或者让它在一段时间后自动解除阻止？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2024年七月4日 09:54 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/2 "2024-07-04T09:54:39Z")

</div>

是的。您需要检查阻止 IP 的东西。请参阅[逆向工程 Discourse API](https://meta.discourse.org/t/reverse-engineer-the-discourse-api/20576)，看看从用户体验执行此操作时会发生什么。

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [2024年七月4日 10:22 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/3 "2024-07-04T10:22:16Z")

</div>

根据[删除用户的 API 文档](https://docs.discourse.org/#tag/Users/operation/deleteUser)，是否阻止 IP 是在请求正文中传递的选项之一。

因此，在发出请求的代码中，您应该能够在请求正文中提供 JSON，其中包含 `”block_ip”: false`。

例如：

```json
{
  delete_posts: false,
  block_email: false,
  block_urls: false,
  block_ip: false,
}

```

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [2024年七月4日 10:22 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/4 "2024-07-04T10:22:47Z")

</div>

我不确定我是否理解了。  
您的意思是，在账户删除后，我需要通过 API 来解除 IP 阻止吗？  
我实际上是希望能有一个 Discourse 的配置开关。

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [2024年七月4日 10:23 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/5 "2024-07-04T10:23:28Z")

</div>

好的，明白了。谢谢，我会试试这个。

---

<div class="post-metadata">

### Author: ![Yousab](https://avatars.discourse-cdn.com/v4/letter/y/4bbf92/32.png) [@Yousab](https://meta.discourse.org/u/Yousab)
#### Post date: [2025年五月14日 15:56 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/6 "2025-05-14T15:56:53Z")

</div>

你好  
你在这里得到答案了吗？因为在我的例子中，“block\_ip”: false 在 API 请求体中不起作用，所以你是否成功了，或者你是否通过逆向工程 Discourse API 发送了另一个单独的请求？

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [2025年五月15日 09:53 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/7 "2025-05-15T09:53:55Z")

</div>

对我来说是有效的。  
这是我们的请求正文：

```plaintext
{
  delete_posts: false,
  block_email: false,
  block_urls: false,
  block_ip: false,
}

```

---

<div class="post-metadata">

### Author: ![Simon\_Manning](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon_manning/32/198596_2.png) [@Simon\_Manning](https://meta.discourse.org/u/Simon_Manning)
#### Post date: [2025年五月15日 10:34 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/8 "2025-05-15T10:34:22Z")

</div>

我不知道问题是否在于将`"block_ip": false`用作请求正文，而不是用作JSON对象字符串。我无法再编辑我的帖子，但我已将其标记，以便将您的JSON添加为示例，希望能使标记的解决方案更清晰。

---

<div class="post-metadata">

### Author: ![Yousab](https://avatars.discourse-cdn.com/v4/letter/y/4bbf92/32.png) [@Yousab](https://meta.discourse.org/u/Yousab)
#### Post date: [2025年五月15日 12:31 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/9 "2025-05-15T12:31:24Z")

</div>

感谢您的回复。  
我们已经为请求 JSON 主体设置了 {block\_email: false}（在我们的情况下是 block\_email），但这似乎并未在用户删除 API 中生效。我们需要单独发送一个请求，将电子邮件从“Screened Emails”（阻止电子邮件）中移除。

---

<div class="post-metadata">

### Author: ![gschmid](https://avatars.discourse-cdn.com/v4/letter/g/a698b9/32.png) [@gschmid](https://meta.discourse.org/u/gschmid)
#### Post date: [2025年五月15日 13:12 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/10 "2025-05-15T13:12:27Z")

</div>

根据你构造 JSON 字符串的方式（手动或使用库），你可能需要尝试单引号、双引号，或者不使用引号。此外我也不太清楚——Discourse API 通常会做到它承诺的那样。

---

<div class="post-metadata">

### Author: ![Yousab](https://avatars.discourse-cdn.com/v4/letter/y/4bbf92/32.png) [@Yousab](https://meta.discourse.org/u/Yousab)
#### Post date: [2025年五月15日 13:20 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/11 "2025-05-15T13:20:30Z")

</div>

好的，我会在这里发布，供遇到使用用户删除API的相同情况的人参考。  
`block_ip: False`可以可靠地防止IP被加入到筛选IP中。  
`block_email: False`应该防止电子邮件被加入到筛选电子邮件中，_然而_ \*\*一些极端情况（如被标记为垃圾邮件的用户或TL0新用户）\*\*仍可能触发电子邮件筛查 **即使`block_email`为False** 。  
这需要额外的请求才能从_筛选电子邮件_中解除对电子邮件的屏蔽。

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [2025年六月14日 13:20 UTC](https://meta.discourse.org/t/how-to-delete-user-accounts-via-api-without-ip-blocking/314959/12 "2025-06-14T13:20:45Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
