# DiscourseConnect 消费者是否应将用户数据保存到本地数据库？

**URL:** https://meta.discourse.org/t/should-discourseconnect-consumer-save-user-data-to-local-database/187180
**Category:** SSO
**Created:** [2021年四月17日 07:14 UTC](https://meta.discourse.org/t/should-discourseconnect-consumer-save-user-data-to-local-database/187180 "2021-04-17T07:14:57Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![hawm](https://avatars.discourse-cdn.com/v4/letter/h/f07891/32.png) [@hawm](https://meta.discourse.org/u/hawm)
#### Post date: [2021年四月17日 07:14 UTC](https://meta.discourse.org/t/should-discourseconnect-consumer-save-user-data-to-local-database/187180/1 "2021-04-17T07:14:57Z")

</div>

举个实际例子，我正在开发一个集成 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 的 MediaWiki 认证扩展，它将成为我 MediaWiki 实例上唯一的登录方式。

据我所知，我有两个选择：

1. 实现一个 [SessionProvider](https://doc.wikimedia.org/mediawiki-core/master/php/classMediaWiki_1_1Session_1_1SessionProvider.html)，从 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 回调中获取用户数据，然后直接将其设置到 MediaWiki 会话中。
2. 实现一个 [PrimaryAuthenticationProvider](https://doc.wikimedia.org/mediawiki-core/master/php/interfaceMediaWiki_1_1Auth_1_1PrimaryAuthenticationProvider.html)，同样从 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 回调中获取用户数据，但在 MediaWiki 系统中创建自己的用户。

我认为选项 1 看起来更像 SSO 实现，而选项 2 则像“使用 Google 登录”。

选项 1 我唯一知道的缺点是，一旦实施将很难退出。如果不将任何凭据保存到 MediaWiki，我无法想象如何迁移出去并启用本地登录。也许我可以将用户凭据保存在某个地方。

我应该选择哪个选项？

谢谢。
