问题描述
strapi的用户有2层含义:
1、能够进入到后台面板的用户,类似于运营人员,而且它拥有普通用户权限,即可通过接口登录
路径:设置-管理人面板-用户。
可以新增一个新的用户,并可设置3种角色,分别是超级管理员、编辑、作者。
Super Admins can access and manage all features and settings.
Editors can manage and publish contents including those of other users.
Authors can manage the content they have created.
2、普通用户,即在User表中的用户
路径1:content Manager-User 该面板用来新增和管理用户
路径2:Content-Type Builder - User 该面板用来对User表的字段进行增删改查(即直接操作数据库表)
注意:普通用户无法登录后台面板,只能登录
API接口,即api/users并获取token。用于前台登录中。
给User表新增新的字段的正确方式
这里说的是如何给普通用户新增一些字段。
普通用户,默认的字段有:
| 名称 | 类型 | 是否必填 |
|---|---|---|
| username | 文本 | 是 |
| 电子邮件 | 是 | |
| provider | 文本 | 否 |
| password | 密码输入框 | 是 |
| resetPasswordToken | 文本 | 否 |
| confirmationToken | 文本 | 否 |
| confirmed | 布尔类型 | 否 |
| blocked | 布尔类型 | 否 |
| role | 关联 Role (来自: users-permissions) | 否 |
如果我要新增一些字段,比如身份证号、手机号该怎么办呢?需要2个步骤:
一、在Content-Type Builder - User 新增字段
- 在
Strapi的管理面板中,导航到Content-Type Builder。 - 在Content-Type Builder中,选择User内容类型
- 点击Add New Field按钮。
- 在弹出的窗口中,选择你想要的字段类型,例如"idCard",
mobile等。 - 根据需要配置其他选项,比如选择是否必填等,然后点击Finish按钮。
- 点击Save按钮保存你的更改。

这一步骤,与操作其他数据库表无区别
二、修改配置代码,在./config/plugins.js中允许以上新的字段
完成步骤1后,以上新的字段并不会出现在content Manager-User 中,意味着你无法在后台或通过接口填充这些字段的值。
我们还需要修改配置文件./config/plugins.js,以便启用:
module.exports = ({ env }) => ({
// ...
"users-permissions": {
config: {
register: {
allowedFields: ["IDCard", "policeID", "mobile", "avatar"],
},
},
},
// ...
});请注意:添加新字段和修改配置后,需要重新启动Strapi服务器,以便更改生效。
此时再打开后台,即可看到以上新的字段,填充内容,或者使用接口新增和编辑用户了。
使用API接口登录和注册用户
一、登录
API地址:/api/auth/local
baseUrl即为你的后台服务器地址
请求方式:post
请求参数(body):
{
"identifier":"test@gmail.com",
"password":"123456"
}成功时返回的内容(response):
{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiaWF0IjoxNzE5OTcyMTcwLCJleHAiOjE3MjI1NjQxNzB9.k_Qc3FEl8K5ugI9hJ-82bi-seacH_1kPDmffzVzjT2w",
"user": {
"id": 2,
"documentId": "z76uh4fp0udweu2oy4jsmetc",
"username": "hello",
"email": "hello@gmail.com",
"provider": "local",
"confirmed": false,
"blocked": false,
"createdAt": "2024-07-02T15:46:10.058Z",
"updatedAt": "2024-07-02T15:46:10.058Z",
"publishedAt": "2024-07-02T15:46:09.910Z",
"locale": null
}
}该接口可以获取token,用来登录系统,所有需要认证权限的接口都需要携带token才有权限访问。
二、注册用户
我们刚刚在user表中,新增了4个字段,分别是["IDCard", "policeID", "mobile", "avatar"]。
那么如何使用API接口注册用户并且携带这些新的字段呢?以下是步骤:
API地址:/api/auth/local/register
请求参数(body):
{
"username": "good2",
"password": "123456",
"email": "good2@qq.com",
"IDcard": "431010200001011235", //新增字段
"mobile": "18899992222", //新增字段
"policeID": "xj0001", //新增字段
"avatar": 5 //新增字段
}成功时返回的内容(response):
{
"jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NSwiaWF0IjoxNzIwMDAxMTQ3LCJleHAiOjE3MjI1OTMxNDd9.-n-uKxIkyNB2ZhgnJwd2TMUXBow3ZblddJ2dpB0hBP0",
"user": {
"id": 5,
"documentId": "b6npqilxxr9e3sommfu52rps",
"username": "good1",
"email": "good1@qq.com",
"provider": "local",
"confirmed": true,
"blocked": false,
"createdAt": "2024-07-03T10:05:47.848Z",
"updatedAt": "2024-07-03T10:05:47.848Z",
"publishedAt": "2024-07-03T10:05:47.849Z",
"locale": null,
"IDcard": "431010200001011235",
"policeID": "xj0001",
"mobile": "18899992222"
}
}注册成功后,会返回该token,以便无缝登录。