@batoanng/oidc

中文文档
3.1.0发布于 2026/05/01MITTypeScriptES Module零依赖近 30 天下载 1922

npm version install size

中文使用文档
文档目录12 节
  1. 特征
  2. 安装
  3. 使用量
  4. 自动流量
  5. 道具
  6. OidcAuthorisationProvider
  7. OidcAuthorisationCallback
  8. 综合说明
  9. 默认路径
  10. Axios 行为
  11. 相关软件包
  12. 发展

@batoanng/oidc (韩语)

npm version install size

@batoanng/oidc 包装 react-oidc-context 包含路由器-意识回调路由,共享授权上下文,登录后浓缩帮助器,以及反应单页应用程序的即时认证状态屏幕.

特征

  • 环绕 react-oidc-context 包括登录、登录和过期密码路由.
  • 显示共享授权上下文 useOidcAuthorisationContext, (中文(简体) ), useChallenge,以及 useChallengeResult。 。 。 .
  • 提供 OidcAuthorisationCallback 用于登录后配置和特权加载.
  • 可以给一个轴线客户端 Authorization 头和单个无声再试 401。 。 。 .
  • 船舶重置密码、错误和状态显示屏 @batoanng/mui-components。 。 。 .

安装

pnpm add @batoanng/oidc

同伴依赖关系包括 react, (中文(简体) ), react-router-dom, (中文(简体) ), react-oidc-context, (中文(简体) ), oidc-client-ts, (中文(简体) ), axios, (中文(简体) ), @mui/material, (中文(简体) ), @emotion/react, (中文(简体) ), react-hook-form, (中文(简体) ), react-use,以及 @batoanng/mui-components。 。 。 .

如果使用内置屏幕 @batoanng/mui-components,同时安装该套件所需的任何额外的同位素.

使用量

将您的应用程序的路由部分包入 OidcAuthorisationProvider。提供者必须住在反光路由器内 <Router> 因为它注入回调路线 <Routes>。 。 。 .

import { OidcAuthorisationProvider } from '@batoanng/oidc';

export function AppShell() {
  return (
    <OidcAuthorisationProvider
      userManagerSettings={{
        authority: 'https://your-idp.example.com',
        client_id: 'web-app',
        redirect_uri: 'http://localhost:3000/oidc/callback',
        post_logout_redirect_uri: 'http://localhost:3000/oidc/logout',
      }}
    >
      <AppRoutes />
    </OidcAuthorisationProvider>
  );
}

登录回调完成后, 加载用户配置和权限, 然后交给 OidcAuthorisationCallback 在您保护的UI 创建之前, 共享授权背景已覆盖 .

import axios from 'axios';
import {
  OidcAuthorisationCallback,
  useOidcAuthorisationContext,
  useEnsureOidcLoginToken,
} from '@batoanng/oidc';

const apiClient = axios.create({
  baseURL: '/api',
});

export function PostLoginGate() {
  const userInformation = {
    shortName: 'T. User',
    fullName: 'Test User',
    email: '[email protected]',
  };

  const privileges = {
    'activityLog.read': true,
  };

  return (
    <OidcAuthorisationCallback apiClient={apiClient} userInformation={userInformation} privileges={privileges}>
      <ProtectedApp />
    </OidcAuthorisationCallback>
  );
}

export function ProtectedPage() {
  useEnsureOidcLoginToken();
  const { isAuthenticated, onLogout, token } = useOidcAuthorisationContext();

  return (
    <section>
      <div>{isAuthenticated ? 'Signed in' : 'Signed out'}</div>
      <div>{token}</div>
      <button onClick={() => void onLogout()}>Logout</button>
    </section>
  );
}

自动流量

flowchart TD
  A["App Router"] --> B["OidcAuthorisationProvider"]
  B --> C["react-oidc-context AuthProvider"]
  B --> D["/oidc/callback -> OidcLoginCallback"]
  B --> E["/oidc/logout -> OidcLogoutCallback"]
  B --> F["* -> OidcAuthorisationContextProvider"]
  D --> G{"Expired password response?"}
  G -- "Yes" --> H["/expired -> OidcResetPasswordPage"]
  G -- "No" --> I["Navigate to postLoginUrl or /"]
  F --> J["AuthorisationContext"]
  J --> K["useOidcAuthorisationContext / useChallenge"]
  I --> L["Load user profile and privileges"]
  L --> M["OidcAuthorisationCallback"]
  M --> N["Update user information and privilege state"]
  M --> O["Optional axios header + 401 retry wiring"]
  N --> P["Protected application UI"]
  O --> P

道具

OidcAuthorisationProvider

Prop类型页:1
userManagerSettingsUserManagerSettings路过 react-oidc-context是因为 AuthProvider。 。 。 .
loginCallbackRelativeUrlstring登录回调路径的可选更改 。 路径名的默认值 redirect_uri,或 /oidc/callback。 。 。 .
logoutCallbackRelativeUrlstring登录召回路由的可选更改 。 路径名的默认值 post_logout_redirect_uri,或 /oidc/logout。 。 。 .
onLoggingIn(options?: LoginOptions) => void | boolean | Promise<void | boolean>返回时 false 以取消登录尝试.
onLoggingOut() => void | boolean | Promise<void | boolean>返回时 false 取消登录尝试.
onPasswordReset(email: string) => void | boolean | Promise<void | boolean>当过期的 Password 流程提交或重发重设邮件时调用 .

OidcAuthorisationCallback

Prop类型页:1
apiClientAxiosInstance可选的轴式实例 Authorization 页眉更新和一次无声- 新鲜重试 401。 。 。 .
userInformationUserInformation | string提供已装入的用户配置文件, 或重定向 URL 字符串在登录后导航.
privilegesUserPrivileges当前用户的解析特权映射 .
errorError | null渲染内置登录出错状态并让用户登录出错.
authSchemestring在使用时使用的授权方案 Authorization 头曰. 默认为 Bearer。 。 。 .

综合说明

默认路径

路线目的
/oidc/callback处理 OIDC 登录重定向 .
/oidc/logout处理 OIDC 日志重定向 .
/expired显示 IdP 报告已过期密码响应时的密码重置流量 .

Axios 行为

  • setBearerToken 在 arxios 实例上存储当前访问符并保存 defaults.headers.common.Authorization 同步.
  • OidcAuthorisationCallback 为所提供安装一个响应截取器 apiClient。 。 。 .
  • A 类 401 触发一个 signinSilent() 尝试。 如果还回了新的令牌, 失败的请求会经过一次刷新 Authorization 头曰.
  • @batoanng/mui-components 提供内置屏幕所使用的状态、通知和形式原始.
  • @batoanng/utils 是一个相关的工作空间工具包,但是 @batoanng/oidc 现在使用 react-use 直接用于其本地的钩子助手.

发展

pnpm --dir packages/oidc lint
pnpm --dir packages/oidc type-check
pnpm --dir packages/oidc test
pnpm --dir packages/oidc build

关键文件 :

  • src/OidcAuthorisationProvider.tsx
  • src/OidcAuthorisationContextProvider.tsx
  • src/OidcAuthorisationCallback.tsx
  • src/hooks.ts
  • src/types.ts

版本与发布记录

@batoanng/oidc 共发布 34 个版本,首次发布于 2025/07/11;过去 12 个月发布了 22 个版本。

版本发布日期距今
3.1.0latest2026/05/016 个月前
3.0.52026/04/286 个月前
3.0.42026/04/077 个月前
3.0.32026/04/077 个月前
3.0.22026/04/067 个月前
3.0.12026/04/067 个月前

关于 @batoanng/oidc 的常见问题

如何安装 @batoanng/oidc?

在项目目录运行 npm install @batoanng/oidc,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@batoanng/mui-components(^3.6.0)、@emotion/react(^11.14.0)、@mui/material(9.0.0)、axios(1.15.2)、oidc-client-ts(^3.5.0)、react(^19.2.5)、react-hook-form(7.74.0)、react-oidc-context(^3.3.1)、react-router-dom(^7.14.2)、react-use(^17.4.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@batoanng/oidc 支持 TypeScript 吗?

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

@batoanng/oidc 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@batoanng/oidc 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@batoanng/oidc 可以商用吗?

@batoanng/oidc 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@batoanng/oidc 的下载量有多少?

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

@batoanng/oidc 还在维护吗?

最新版本 3.1.0 发布于 2026/05/01(6 个月前);至今共发布 34 个版本,其中过去 12 个月发布了 22 个;首次发布于 2025/07/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。