管理面板配置
¥Admin panel configuration
./config/admin.js
用于定义 Strapi 应用的管理面板配置。
¥The ./config/admin.js
is used to define admin panel configuration for the Strapi application.
可用选项
¥Available options
./config/admin.js
文件可以包含以下参数:
¥The ./config/admin.js
file can include the following parameters:
范围 | 描述 | 类型 | 默认 |
---|---|---|---|
apiToken.salt | 用于生成 API 令牌 的盐 | string | 随机字符串 |
auditLogs.enabled | 启用或禁用 审核日志 功能 | 布尔值 | true |
auditLogs.retentionDays | 审核日志 的保留时间(以天为单位)。 自托管客户与 Strapi Cloud 客户的行为有所不同,请参阅表下的注释。 | integer | 90 |
auth | 认证配置 | object | * |
auth.secret | 用于编码 JWT 令牌的秘密 | string | undefined |
auth.domain | 用于 SSO 身份验证的 cookie 中使用的域(仅限企业) | string | undefined |
auth.providers | 用于 SSO 的身份验证提供者列表(仅限企业,请参阅 SSO) | array(object) | * |
auth.options | 传递给 jsonwebtoken 的选项对象 | object | * |
auth.options.expiresIn | jsonwebtoken 中使用的 JWT 过期时间 | object | 30d |
auth.events | 注册认证的所有事件订阅者的记录 | object | {} |
auth.events.onConnectionSuccess | 管理员用户成功登录管理面板时调用的函数 | function | undefined |
auth.events.onConnectionError | 管理员用户登录管理面板失败时调用的函数 | function | undefined |
url | 你的管理面板的 URL。默认值:/admin 。注意:如果 url 是相对的,它将与 url 连接。 | string | /admin |
autoOpen | 启用或禁用启动时打开管理。 | 布尔值 | true |
watchIgnoreFiles | 添加在开发过程中不应查看的自定义文件。查看更多 此处(属性 ignored )。 | array(string) | [] |
host | 为管理面板使用不同的主机。 | string | localhost |
port | 对管理面板使用不同的端口。 | string | 8000 |
serveAdminPanel | 如果为 false,则不会提供管理面板。注意:index.html 仍将提供服务 | 布尔值 | true |
flags | 用于打开或关闭管理员的某些功能或元素的设置 | object | {} |
flags.nps | 启用/禁用净推荐值弹出窗口 | 布尔值 | true |
flags.promoteEE | 启用/禁用 Strapi Enterprise 功能的推广 | 布尔值 | true |
forgotPassword | 自定义忘记密码电子邮件的设置(参见 忘记密码 邮箱) | object | {} |
forgotPassword.emailTemplate | 电子邮件插件 中定义的电子邮件模板 | object | 默认模板 |
forgotPassword.from | 发送者邮件地址 | string | 你的 提供者配置 中定义的默认值 |
forgotPassword.replyTo | 默认地址或要求收件人回应的地址 | string | 你的 提供者配置 中定义的默认值 |
rateLimit | 用于自定义管理面板身份验证端点速率限制的设置,其他配置选项来自 koa2-ratelimit | object | {} |
rateLimit.enabled | 启用或禁用速率限制器 | 布尔值 | true |
rateLimit.interval | 请求被视为同一速率限制桶一部分的时间窗口 | object | { min: 5 } |
rateLimit.max | 时间窗口内允许的最大请求数 | integer | 5 |
rateLimit.delayAfter | 延迟响应之前允许的请求数 | integer | 1 |
rateLimit.timeWait | 响应请求之前等待的时间(以毫秒为单位) | integer | 3000 |
rateLimit.prefixKey | 速率限制键的前缀 | string | ${userEmail}:${ctx.request.path}:${ctx.request.ip} |
rateLimit.whitelist | 列入白名单以免受速率限制的 IP 地址数组 | array(string) | [] |
rateLimit.store | 速率限制存储位置(Memory、Sequelize 或 Redis),有关详细信息,请参阅 koa2-ratelimit documentation | object | MemoryStore |
transfer.token.salt | 用于生成 转移令牌 的盐。 如果没有定义转账令牌盐,转账功能将被禁用。 | string | 随机字符串 |
对于 Strapi Cloud 客户,将使用存储在许可证信息中的 auditLogs.retentionDays
值,除非在 config/admin.js|ts
配置文件中定义了较小的 retentionDays
值。
¥For Strapi Cloud customers, the auditLogs.retentionDays
value stored in the license information is used, unless a smaller retentionDays
value is defined in the config/admin.js|ts
configuration file.
配置
¥Configurations
./config/admin.js
文件应至少包含带有身份验证和 API 令牌 所需参数的最小配置。可以包含附加参数以实现完整配置。
¥The ./config/admin.js
file should at least include a minimal configuration with required parameters for authentication and API tokens. Additional parameters can be included for a full configuration.
环境配置(即使用 env()
辅助程序)不需要包含所有值,只要它们存在于默认 ./config/server.js
中即可。
¥Environmental configurations (i.e. using the env()
helper) do not need to contain all the values so long as they exist in the default ./config/server.js
.
- Minimal configuration
- Full configuration
使用任何新项目创建的默认配置至少应包括以下内容:
¥The default configuration created with any new project should at least include the following:
- JavaScript
- TypeScript
module.exports = ({ env }) => ({
apiToken: {
salt: env('API_TOKEN_SALT', 'someRandomLongString'),
},
auditLogs: { // only accessible with an Enterprise plan
enabled: env.bool('AUDIT_LOGS_ENABLED', true),
},
auth: {
secret: env('ADMIN_JWT_SECRET', 'someSecretKey'),
},
transfer: {
token: {
salt: env('TRANSFER_TOKEN_SALT', 'anotherRandomLongString'),
}
},
});
export default ({ env }) => ({
apiToken: {
salt: env('API_TOKEN_SALT', 'someRandomLongString'),
},
auditLogs: { // only accessible with an Enterprise plan
enabled: env.bool('AUDIT_LOGS_ENABLED', true),
},
auth: {
secret: env('ADMIN_JWT_SECRET', 'someSecretKey'),
},
transfer: {
token: {
salt: env('TRANSFER_TOKEN_SALT', 'anotherRandomLongString'),
}
},
});
- JavaScript
- TypeScript
module.exports = ({ env }) => ({
apiToken: {
salt: env('API_TOKEN_SALT', 'someRandomLongString'),
},
auditLogs: { // only accessible with an Enterprise plan
enabled: env.bool('AUDIT_LOGS_ENABLED', true),
retentionDays: 120,
},
auth: {
events: {
onConnectionSuccess(e) {
console.log(e.user, e.provider);
},
onConnectionError(e) {
console.error(e.error, e.provider);
},
},
options: {
expiresIn: '7d',
},
secret: env('ADMIN_JWT_SECRET', 'someSecretKey'),
},
url: env('PUBLIC_ADMIN_URL', '/dashboard'),
autoOpen: false,
watchIgnoreFiles: [
'./my-custom-folder', // Folder
'./scripts/someScript.sh', // File
],
host: 'localhost',
port: 8003,
serveAdminPanel: env.bool('SERVE_ADMIN', true),
forgotPassword: {
from: 'no-reply@example.com',
replyTo: 'no-reply@example.com',
},
rateLimit: {
interval: { hour: 1, min: 30 },
timeWait: 3*1000,
max: 10,
},
transfer: {
token: {
salt: env('TRANSFER_TOKEN_SALT', 'anotherRandomLongString'),
}
},
});
export default ({ env }) => ({
apiToken: {
salt: env('API_TOKEN_SALT', 'someRandomLongString'),
},
auditLogs: { // only accessible with an Enterprise plan
enabled: env.bool('AUDIT_LOGS_ENABLED', true),
retentionDays: 120,
},
auth: {
events: {
onConnectionSuccess(e) {
console.log(e.user, e.provider);
},
onConnectionError(e) {
console.error(e.error, e.provider);
},
},
options: {
expiresIn: '7d',
},
secret: env('ADMIN_JWT_SECRET', 'someSecretKey'),
},
url: env('PUBLIC_ADMIN_URL', '/dashboard'),
autoOpen: false,
watchIgnoreFiles: [
'./my-custom-folder', // Folder
'./scripts/someScript.sh', // File
],
host: 'localhost',
port: 8003,
serveAdminPanel: env.bool('SERVE_ADMIN', true),
forgotPassword: {
from: 'no-reply@example.com',
replyTo: 'no-reply@example.com',
},
rateLimit: {
interval: { hour: 1, min: 30 },
timeWait: 3*1000,
max: 10,
},
transfer: {
token: {
salt: env('TRANSFER_TOKEN_SALT', 'anotherRandomLongString'),
}
},
});