NocoBase v1.6.0 正式版发布

原文链接:NocoBase v1.6.0 正式版发布 - NocoBase

新特性

集群模式

企业版可通过相关插件支持集群模式部署,应用以集群模式运行时,可以通过多个实例和使用多核模式来提高应用的对并发访问处理的性能。

参考文档:集群部署

密码策略

为所有用户设置密码规则,密码有效期和密码登录安全策略,管理锁定用户。

参考文档:密码策略和用户锁定

Token 安全策略

Token 安全策略是一种用于保护系统安全和体验的功能配置。它包括了三个主要配置项:"会话有效期"、"Token 有效周期" 和 "过期 Token 刷新时限" 。

参考文档:Token 安全策略

IP 限制

NocoBase 支持管理员对用户访问 IP 设置白名单或黑名单,以限制未授权的外部网络连接或阻止已知的恶意 IP 地址,降低安全风险。同时支持管理员查询访问拒绝日志,识别风险 IP。

参考文档:IP 限制

变量和密钥

集中配置和管理环境变量和密钥,用于敏感数据存储、配置数据重用、环境配置隔离等。

参考文档:变量和密钥

迁移管理

用于将应用配置从一个应用环境迁移到另一个应用环境。

参考文档:

路由管理

  • 菜单数据独立并改名为路由 :菜单数据从 UI Schema 中拆分出来,改名为路由 ,分为 desktopRoutesmobileRoutes 两张表,分别对应桌面端路由和移动端路由。
  • 菜单前端优化,支持折叠与响应式 :菜单在前端实现了折叠响应式适配,提升了使用体验。

参考文档:路由管理

角色和权限

  • 支持配置更多的操作按钮权限,包括弹窗、链接、扫码、触发工作流

  • 支持配置标签页权限

用户管理

支持配置用户个人资料表单

工作流

在全局工具栏中增加流程待办中心入口,并实时提示人工节点、审批的相关待办任务数量。

工作流:自定义操作事件

支持全局和批量数据触发自定义操作事件。

工作流:审批

  • 支持转签、加签。
  • 支持审批人在提交审批时修改申请内容。
  • 支持在审批界面中配置审批基础信息区块。
  • 优化审批发起和待办区块的样式和交互,同时也在全局的流程待办中心中内置。
  • 不再区分发起审批的位置,审批中心区块可以发起和处理所有审批。

工作流:JSON 变量映射节点

新增用于将上游节点结果中的 JSON 数据映射为变量的专用节点。

参考文档:JSON 变量映射

扩展能力提升及插件示例

扩展项 插件示例
数据表预置字段扩展 @nocobase-sample/plugin-data-source-main-custom-preset-fields
日历颜色字段可选项扩展 @nocobase-sample/plugin-calendar-register-color-field
日历标题字段可选项扩展 @nocobase-sample/plugin-calendar-register-title-field
公式可选项字段扩展 @nocobase-sample/plugin-field-formula-register-expression-field
看板分组字段扩展 @nocobase-sample/plugin-kanban-register-group-field
筛选操作符扩展 @nocobase-sample/plugin-register-filter-operator
文件存储扩展 @nocobase-sample/plugin-file-storage-demo

不兼容变更

Token 安全策略更新

1.6 版本新增了 Token 安全策略,Auth 认证检查未通过时,将返回 401 错误并跳转至登录页。此行为与之前版本有所不同。如需跳过检查,可参考以下示例进行处理:

前端请求

javascript 复制代码
useRequest({
  url: '/test',
  skipAuth: true,
});

api.request({
  url: '/test',
  skipAuth: true,
});

后端中间件

javascript 复制代码
class PluginMiddlewareExampleServer extends plugin {
  middlewareExample = (ctx, next) => {
    if (ctx.path === '/path/to') {
      ctx.skipAuthCheck = true;
    }
    await next();
  };
  async load() {
    this.app.dataSourceManager.afterAddDataSource((dataSource) => {
      dataSource.resourceManager.use(this.middlewareExample, {
        before: 'auth',
      });
    });
  }
}

单元测试函数 agent.login 由同步改为异步

由于认证流程需要进行一些异步操作,测试函数 login 改为异步, 示例:

TypeScript 复制代码
import { createMockServer } from '@nocobase/test';

describe('my db suite', () => {
  let app;
  let agent;

  beforeEach(async () => {
    app = await createMockServer({
      registerActions: true,
      acl: true,
      plugins: ['users', 'auth', 'acl'],
    });
    agent = await app.agent().login(1);
  });

  test('case1', async () => {
    await agent.get('/examples');
    await agent.get('/examples');
    await agent.resource('examples').create();
  });
});

提供全新的用户中心设置项的扩展 API

API

ts 复制代码
type UserCenterSettingsItemOptions = SchemaSettingsItemType & { aclSnippet?: string };

class Application {
  addUserCenterSettingsItem(options: UserCenterSettingsItemOptions);
}

示例

javascript 复制代码
class PluginUserCenterSettingsExampleClient extends plugin {
  async load() {
    this.app.addUserCenterSettingsItem({
      name: 'nickName',
      Component: NickName,
      sort: 0,
    });
  }
}
相关推荐
攻城狮7号6 小时前
小米 MiMo 开源:7B 参数凭什么 “叫板” AI行业巨头?
人工智能·ai·开源·mimo·小米ai
编程乐趣6 小时前
推荐一组WPF自定义控件开源项目
开源
程序员小杰@9 小时前
✨WordToCard使用分享✨
前端·人工智能·开源·云计算
OpenLoong 开源社区9 小时前
技术视界 | 青龙机器人训练地形详解(一):如何创建一个地形
人工智能·机器人·开源·人形机器人·openloong
饺子大魔王的男人13 小时前
开源照片管理系统PhotoPrism的容器化部署与远程管理配置
开源
DisonTangor14 小时前
LLaMA-Omni 2:基于 LLM 的自回归流语音合成实时口语聊天机器人
人工智能·开源·aigc·音视频·llama
说私域15 小时前
数字化驱动下的智慧物流与零售创新:全流程无人仓与定制开发开源AI智能名片S2B2C商城小程序的协同实践
人工智能·小程序·开源·零售
hvinsion16 小时前
【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现
python·开源·音视频
hvinsion18 小时前
【开源】Python打造高效剪贴板历史管理器:实现跨平台生产力工具
开发语言·python·开源·剪切板·粘贴历史记录
hvinsion18 小时前
【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控
开发语言·python·开源·文件备份·定时备份