# 自定义用户字段，对用户隐藏并通过 API 可编辑？

**URL:** https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838
**Category:** Development
**Tags:** rest-api, user-custom-fields
**Created:** [2022年一月24日 16:23 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838 "2022-01-24T16:23:32Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![Nerd\_Alert](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nerd_alert/32/237766_2.png) [@Nerd\_Alert](https://meta.discourse.org/u/Nerd_Alert)
#### Post date: [2022年一月24日 16:23 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/1 "2022-01-24T16:23:32Z")

</div>

是否有办法通过 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: [2022年一月24日 20:54 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/2 "2022-01-24T20:54:47Z")

</div>

我认为您可以在注册时不要求填写，用 CSS 隐藏注册页面上的该字段，并在注册后使其不可编辑。然后您可以使用管理员 API 密钥进行编辑。

如果用户在创建账户时可能设法找到隐藏字段的风险存在，那么我认为您需要一个插件。

在此处说明您实际要解决的问题可能会有所帮助。您在此处提出的是一个解决方案，而不是它所要解决的问题。

---

<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: [2022年一月25日 07:53 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/4 "2022-01-25T07:53:50Z")

</div>

它不是最完美的解决方案，但您能否使用 [User Notes 插件](https://meta.discourse.org/t/user-notes-plugin/41026)？

---

<div class="post-metadata">

### Author: ![Nerd\_Alert](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nerd_alert/32/237766_2.png) [@Nerd\_Alert](https://meta.discourse.org/u/Nerd_Alert)
#### Post date: [2022年一月25日 13:27 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/5 "2022-01-25T13:27:49Z")

</div>

我打算用它来存储用户计算机的硬件标识符，这样用户就无法登录到软件中的其他用户帐户（该软件与论坛紧密集成）。而且我不想让他们看到它（因为它可能会泄露一些信息，不完全确定），并且我不想让他们能够更改它，这样他们就可以欺骗系统允许他们登录到别人的帐户。

---

<div class="post-metadata">

### Author: ![Nerd\_Alert](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nerd_alert/32/237766_2.png) [@Nerd\_Alert](https://meta.discourse.org/u/Nerd_Alert)
#### Post date: [2022年一月25日 13:28 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/6 "2022-01-25T13:28:42Z")

</div>

这需要我为每个用户手动输入一个，对吗？

---

<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: [2022年一月25日 13:56 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/7 "2022-01-25T13:56:44Z")

</div>

我不完全明白您将如何做到这一点，但您可以查看 [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) 来解决该问题。或者，也许自定义插件（如果您是自托管或企业版用户）是您想要的。

> [@Nerd\_Alert](#):
>
> 这需要我为每个用户手动输入一个，对吗？

您可以使用 API 填充用户备注，就像您使用 API 一样。

---

<div class="post-metadata">

### Author: ![Nerd\_Alert](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nerd_alert/32/237766_2.png) [@Nerd\_Alert](https://meta.discourse.org/u/Nerd_Alert)
#### Post date: [2022年一月25日 16:04 UTC](https://meta.discourse.org/t/custom-user-field-that-s-hidden-from-user-and-editable-by-api/215838/8 "2022-01-25T16:04:27Z")

</div>

“你可以像使用 API 一样，用 API 来填充用户备注。”——我主要想问的是，这是否需要我为每个用户创建一条备注。另外，我已经有了一个有效的硬件标识符实现，我只需要一种方法来存储它并将其与用户关联起来。而且我知道，通过 API 以用户身份登录就可以获取任何用户字段。
