---
title: Next.js App Router
description: 在 Next.js App Router 应用中接入 Sudomimus Connect 登录。
editUrl: true
head: []
template: doc
sidebar:
  order: 2
  hidden: false
  attrs: {}
pagefind: true
draft: false
---

`@sudomimus/nextjs` 提供登录、callback、logout 与当前 session 读取所需的服务端 route handler。

## 接入 handlers

创建一个服务端专用 module，配置 Connect options 与共享、持久的 `WebAuthStore`：

```ts
// src/lib/sudomimus.ts
import { createNextHandlers } from "@sudomimus/nextjs";

export const {
    start,
    callback,
    logout,
    current,
    currentFromCookieHeader,
} = createNextHandlers(options);
```

在 App Router route 文件中导出这些 handlers：

```ts
// app/api/login/route.ts
export { start as POST } from "@/lib/sudomimus";

// app/auth/callback/route.ts
export { callback as GET } from "@/lib/sudomimus";

// app/api/logout/route.ts
export { logout as POST } from "@/lib/sudomimus";
```

Route Handler 中调用 `current(request)`。Server Component 中把请求的 cookie header 传给 `currentFromCookieHeader`。不要把返回的 token 传进 Client Component。

POST handler 会根据 callback origin 校验 `Origin`。应保留 POST 方法，并为准确的 callback URL 配置 CALLBACK ReturnRule。

[查看包源码](https://github.com/sudomimus/sudomimus/tree/master/sdks/typescript/packages/nextjs)