@crossmint/server-sdk

中文文档
1.2.100发布于 2026/11/10Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 3908

这个SDK提供了一套工具,在使用服务器侧渲染(SSR)的Crossmint驱动应用程序中认证用户. 它简化了处理认证令牌和管理用户会话的程序,从而更容易整合正版

中文使用文档
文档目录7 节
  1. 安装
  2. API 密钥和范围
  3. 使用量
  4. 警卫
  5. 设置自定义刷新路由
  6. 使用自定义刷新路由
  7. 设置自定义登录路径

@ crossmint/ 服务器- sdk

这个SDK提供了一套工具,在使用服务器侧渲染(SSR)的Crossmint驱动应用程序中认证用户. 它简化了处理认证令牌和管理用户会话的过程,从而更容易将认证整合到您 Next.js 应用程序中.

安装

要安装 SDK, 您可以使用 npm 或 线 :

npm install @crossmint/server-sdk

API 密钥和范围

使用服务器侧 API 密钥( S)sk_...) 从克罗斯明特控制台. 它需要什么样的范围取决于你所说的方法:

方法范围
getSession, (中文(简体) ), handleCustomRefresh, (中文(简体) ), logout无
getUserusers.read

getSession 使用 Crossmint 的公用密钥验证 JWT,并通过不检查瞄准镜的端点刷新会话. getUser 读取用户的配置文件,所以关键需要 users.read没有它, getUser 丢出一个 CrossmintAuthenticationError 与 status 403号.

使用量

要在您的应用程序中使用 SDK, 请遵循这些步骤 :

  1. 导入 SDK 到您的工程中 :
import { createCrossmint, CrossmintAuth } from "@crossmint/server-sdk";

const crossmint = createCrossmint({
    apiKey: process.env.SERVER_CROSSMINT_API_KEY || "",
});

const crossmintAuth = CrossmintAuth.from(crossmint);
  1. 使用 SDK 认证用户 :

通过请求对象,SDK读取会话 cookie for you. 这和Node.js有关 (单位:千美元)IncomingMessage)并获取 API(Request请求,包括Next.js中间软件和路由处理器:

const { jwt, userId } = await crossmintAuth.getSession(request);

客户端 SDK 将会话存储在 cookie 中, 范围为您的项目 : crossmint-jwt-<projectId> 财务报告和审定财务报表 crossmint-refresh-token-<projectId>,项目ID来自您的 API 密钥. getSession(request) 读取 这些名字,并读 遗产 crossmint-jwt 财务报告和审定财务报表 crossmint-refresh-token 名称仅当没有显示范围饼干时.

A Next.js 服务器组件中没有请求对象 。 按名字读取饼干 getAuthCookieNames(projectId) 返回并传递到 getSession。项目ID来自您的 API 密钥 :

import { cookies } from "next/headers";
import { getAuthCookieNames, validateAPIKey } from "@crossmint/server-sdk";

const apiKeyResult = validateAPIKey(process.env.SERVER_CROSSMINT_API_KEY ?? "");
if (!apiKeyResult.isValid) {
    throw new Error(apiKeyResult.message);
}

const cookieStore = await cookies();
const cookieNames = getAuthCookieNames(apiKeyResult.projectId);
const refreshToken = cookieStore.get(cookieNames.refreshToken)?.value;

if (refreshToken != null) {
    const { jwt, userId } = await crossmintAuth.getSession({
        jwt: cookieStore.get(cookieNames.jwt)?.value,
        refreshToken,
    });
}
  1. 获取用户配置文件

getSession 返回用户的ID。 要获得他们的电子邮件,电话号码或链接到的X账户,将ID传递到 getUser它需要 users.read 选项

import { CrossmintAuthenticationError } from "@crossmint/server-sdk";

try {
    const user = await crossmintAuth.getUser(userId); // { id, email?, phoneNumber?, twitter? }
} catch (error) {
    if (error instanceof CrossmintAuthenticationError) {
        // error.status is 403 when the API key lacks users.read, 404 when the user has not signed in to this project
        console.error(error.status, error.message);
    }
    throw error;
}
  1. 将认证材料存储在 cookie 中

如果您正在使用一个可访问响应对象的框架,可以通过将响应对象传递到 getSession 方法。 SDK 写有工程范围饼干名称( 日志也过期了未扫描的遗产 ) :

const { jwt, userId } = await crossmintAuth.getSession(request, response);
  1. 注销
await crossmintAuth.logout(request);

警卫

SDK允许您设定 httpOnly, (中文(简体) ), secure, (中文(简体) ), domain 财务报告和审定财务报表 sameSite 用于饼干的选项。 这样可以控制饼干的存储和传输方式. 将它与自定义的刷新路由组合在一起,您可以将认证材料存储在HttpOnly Cookie中,这些认证材料被绑定在提供路由的域上.

在创建自定义刷新路由时配置 CrossmintAuth 这样做 :

const crossmintAuth = CrossmintAuth.from(crossmint, {
    cookieOptions: {
        httpOnly: true,
        sameSite: "Strict",
        secure: true,
        domain: ".example.com",
    },
});

httpOnly 仅适用于刷新符号。 会话符号不会是 Http Only ,因为它在客户端中用于API 调用 .

设置自定义刷新路由

要设置自定义刷新路由, 您可以使用 handleCustomRefresh 方法。 这种方法会刷新符号并还原新的认证材料. 这样,认证材料可以被存储在被绑定在所提供路由域的饼干中.

在使用获取 API 的环境中 Request 财务报告和审定财务报表 Response 对象, handleCustomRefresh 返回响应对象 :

return await crossmintAuth.handleCustomRefresh(request);

在使用Node.js API的环境中,您还需要提供响应对象并结束响应:

await crossmintAuth.handleCustomRefresh(req, res);
res.end();

使用自定义刷新路由

您也可以提供自定义刷新路由 :

const crossmintAuth = CrossmintAuth.from(crossmint, {
    refreshRoute: `${process.env.APP_URL || "http://localhost:3000"}/api/refresh`,
});

SDK将使用提供的路由,而不是Crossmint的刷新终点. 在服务器上, 将它配置为静态的、可信任的绝对 URL; 永远不要从收到的请求或请求中得出它 Host 头曰. 在生产中使用HTTPS. 服务器 SDK 验证刷新 JWT 的签名,过期,以及针对 Crossmint 的 JWKS 的项目受众,并从已验证的用户ID取出 sub 索赔.

设置自定义登录路径

使用时 HttpOnly cookie,登录不能发生客户端,因为它不能访问cookie. 可以设置自定义的登录路由来处理登录过程.

在使用获取 API 的环境中, logout 返回响应对象 :

return await crossmintAuth.logout(request);

在使用Node.js API的环境中,您还需要提供响应对象并结束响应:

await crossmintAuth.logout(req, res);
res.end();

版本与发布记录

@crossmint/server-sdk 共发布 117 个版本,首次发布于 2024/10/10;过去 12 个月发布了 52 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.2.100latest2026/11/10今天
1.2.992026/11/074 天前
1.2.982026/11/064 天前
1.2.972026/11/065 天前
1.2.962026/11/056 天前
1.2.952026/11/056 天前

其他发布通道:beta → 1.2.63-beta.1。

关于 @crossmint/server-sdk 的常见问题

@crossmint/server-sdk 是什么?

这个SDK提供了一套工具,在使用服务器侧渲染(SSR)的Crossmint驱动应用程序中认证用户. 它简化了处理认证令牌和管理用户会话的程序,从而更容易整合正版

如何安装 @crossmint/server-sdk?

在项目目录运行 npm install @crossmint/server-sdk,或使用 pnpm add / yarn add / bun add。

@crossmint/server-sdk 支持 TypeScript 吗?

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

@crossmint/server-sdk 支持 ESM 还是 CommonJS?

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

@crossmint/server-sdk 可以商用吗?

@crossmint/server-sdk 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@crossmint/server-sdk 的下载量有多少?

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

@crossmint/server-sdk 还在维护吗?

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