# SSO，已禁用的旧账户

**URL:** <https://meta.discourse.org/t/sso-old-disabled-accounts/129471>\
**Category:** SSO\
**Created:** [2019年九月25日 11:50 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471 "2019-09-25T11:50:29Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![kenshin79it](https://avatars.discourse-cdn.com/v4/letter/k/c37758/32.png) [@kenshin79it](https://meta.discourse.org/u/kenshin79it)\
**Post date:** [2019年九月25日 11:50 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/1 "2019-09-25T11:50:29Z")

</div>

托管我们 Discourse 实例的服务器彻底崩溃，我们仅有一份较旧的 Discourse 备份。  
我们已恢复该实例，它使用与 Drupal 的单点登录（SSO）。

问题：自上次备份至今，Drupal 中已有若干用户被停用，因此（我推测）他们将无法重新连接到 Discourse。  
但关于电子邮件通知呢？我们已被告知，一些已离职用户仍收到了一些通知。是否有办法让 Discourse 自动识别哪些用户不应再接收这些通知？我实在不想手动逐个检查用户列表🙂。

---

<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:** [2019年九月25日 12:45 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/2 "2019-09-25T12:45:06Z")

</div>

您可以让 Drupal 使用 API 来停用这些用户，或者生成一个列表，然后通过 Rails 控制台停用他们。

---

<div class="post-metadata">

**Author:** ![kenshin79it](https://avatars.discourse-cdn.com/v4/letter/k/c37758/32.png) [@kenshin79it](https://meta.discourse.org/u/kenshin79it)\
**Post date:** [2019年九月25日 12:47 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/3 "2019-09-25T12:47:40Z")

</div>

> [@pfaffman](#):
>
> 您孩子可以使用 Drupal 的 API 来停用这些用户。

听起来不错。有什么关于如何操作的提示吗？

---

<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:** [2019年九月25日 14:57 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/4 "2019-09-25T14:57:29Z")

</div>

要查找 API 调用，您可以访问 [https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576。此外，关于](https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576%E3%80%82%E6%AD%A4%E5%A4%96%EF%BC%8C%E5%85%B3%E4%BA%8E) SSO 的帖子应提供有关如何由 SSO 主系统禁用账户的信息。不过，对于您的情况，账户已被禁用，因此您可能需要以某种方式获取这些账户的列表……然后执行类似以下操作：

```
 Users.where(以某种方式获取用户).update_all(active: false)

```

（这并不完全准确，但思路如此。）

如果是紧急情况且您有预算，我的联系方式在个人资料中。

---

<div class="post-metadata">

**Author:** ![kenshin79it](https://avatars.discourse-cdn.com/v4/letter/k/c37758/32.png) [@kenshin79it](https://meta.discourse.org/u/kenshin79it)\
**Post date:** [2019年九月25日 15:36 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/5 "2019-09-25T15:36:56Z")

</div>

谢谢，但我主要是想问，是否有标准的 SSO 组件/流程/端点/接口来处理这类事情（同步活跃用户）。

看来没有 🙂

那我就自己实现吧。

---

<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:** [2019年九月25日 16:05 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/6 "2019-09-25T16:05:25Z")

</div>

有的。你很可能能在 wp-discourse 插件中找到它，但最简单的方法是：打开开发者工具，然后停用某个账户，观察它发出了什么请求。

---

<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:** [2023年五月14日 11:36 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/7 "2023-05-14T11:36:06Z")

</div>



---

<div class="post-metadata">

**Author:** ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)\
**Post date:** [2023年五月14日 12:15 UTC](https://meta.discourse.org/t/sso-old-disabled-accounts/129471/8 "2023-05-14T12:15:59Z")

</div>


