@aftership/automizely-rbac-react

中文文档
1.0.0发布于 2026/09/03TypeScriptESM + CJS近 30 天下载 1.4万

如何使用

中文使用文档
文档目录4 节
  1. 如何使用
  2. 与 RBAC 环绕
  3. 安保部
  4. 保护资源

自动化- RBAC- 反应

如何使用

与 RBAC 环绕

  • 会探测到 Business RABC 或者说 Employee RBAC 自动由 Auth SDK
import { RBACProvider } from '@aftership/automizely-rbac-react';

function App() {
  return (
    <div>
      <RBACProvider>
        <ComponentA />
        <ComponentB />
      </RBACProvider>
    </div>
  )
}

默认情况下, SDK 请求权限目录和所有产品赠款 with_catalog=true&with_all_products=true。这样可以保持 granted 准确时间 当前产品的许可树包含来自其他产品的许可.

额外的角色许可查询参数可以通过 requestOptions.query数字 :

<RBACProvider
  requestOptions={{
    query: {
      with_resource_apis: true,
    },
  }}
>
  <ComponentA />
</RBACProvider>

查询值支持字符串、数字和布尔值。 默认的 RBAC 查询 当不同的响应范围是 所需经费.

安保部


import { RolePermissions, RBACProvider } from '@aftership/automizely-rbac-react';
import { getServerSideProps as rbacGetServerSideProps } from '@aftership/automizely-rbac-react/server';

function getServerSideProps(ctx) {
  const initialData = rbacGetServerSideProps({
    realm: 'business',
    accountId: session.user.id,
    organizationId: organization?.id,
    productCode,
    query: {
      with_resource_apis: true,
    },
  }).catch((error) => {
    console.error('Error fetching rbac data:', error);
    return { role: { id: '', name: '' }, permissions: [] };
  })

  return {
    props: {
      initialData
    }
  }
}

function App({initialData}) {
  return (
    <div>
      <RBACProvider initialData={initialData}>
        <ComponentA />
        <ComponentB />
      </RBACProvider>
    </div>
  )
}

服务器助手接受相同的可选 query 对象为 RBACProvider.requestOptions.query,因此客户端和SSR请求可以使用 同样的角色许可范围.

遗产版本0.4.0

import { RBACProvider } from '@aftership/automizely-rbac-react';

function App() {
  const organizationId = '123456';

  return (
    <div>
      <RBACProvider
        orgId={organizationId}
        // for dev purpose
        // requestHeaders={{
        //   'am-account-id': user.account_id,
        //   'am-account-jwt-azp': 'aftership',
        // }}
      >
        <ComponentA />
        <ComponentB />
      </RBACProvider>
    </div>
  );
}

保护资源

import { Can, getPermissionTreePath, useRBACContext } from '@aftership/automizely-rbac-react';

function ComponentA() {
  const { ability, role } = useRBACContext();
  const hasPermission =
    ability.can('view', 'analytics/shipment') && ability.cannot('edit', 'notification');

  return hasPermission ? <div>role: {role.name}</div> : <div>some content that requires permissions</div>;
}

function ComponentB() {
  return (
    <div>
      <Can do="view" on="analytics/shipment">
        <div>some content that requires permissions</div>
      </Can>

      <Can not do="view" on="analytics/shipment">
        <div>some content that don't need requires permissions</div>
      </Can>

      <Can do="view" on="analytics/shipment" passThrough>
        {(allowed) => <button disabled={!allowed}>Save</button>}
      </Can>

      <Can do="edit" on="organization/domains" passThrough>
        {(allowed, ability, permission) => (
          <button disabled={!allowed} title={getPermissionTreePath(permission)}>
            Edit domains
          </button>
        )}
      </Can>
    </div>
  );
}

function ComponentC() {
  return (
    <div>
      <Can do="view" on="analytics/shipment" fallback={<div>fetching permission data...</div>}>
        <div>some content that requires permissions</div>
      </Can>
    </div>
  );
}

版本与发布记录

@aftership/automizely-rbac-react 共发布 28 个版本,首次发布于 2022/02/14;过去 12 个月发布了 7 个版本。

版本发布日期距今
1.0.0latest2026/09/032 个月前
1.0.0-rc.4rc2026/08/312 个月前
1.0.0-rc.32026/08/312 个月前
1.0.0-rc.22026/08/312 个月前
1.0.0-rc.12026/08/272 个月前
0.7.22026/04/136 个月前

关于 @aftership/automizely-rbac-react 的常见问题

@aftership/automizely-rbac-react 是什么?

如何使用

如何安装 @aftership/automizely-rbac-react?

在项目目录运行 npm install @aftership/automizely-rbac-react,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=17)、react-dom(>=17)、@aftership/automizely-product-auth(>=2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aftership/automizely-rbac-react 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aftership/automizely-rbac-react 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aftership/automizely-rbac-react 可以商用吗?

@aftership/automizely-rbac-react 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@aftership/automizely-rbac-react 的下载量有多少?

根据 npm 官方下载统计,@aftership/automizely-rbac-react 在 2026/10/05 – 2026/11/03 这 30 天内被下载 14,455 次,日均约 482 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aftership/automizely-rbac-react 还在维护吗?

最新版本 1.0.0 发布于 2026/09/03(2 个月前);至今共发布 28 个版本,其中过去 12 个月发布了 7 个;首次发布于 2022/02/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。