# Elysia 集成 (/docs/integrations/elysia)

将 Better Auth 集成到 Elysia。



本集成指南假设你正在使用带有 bun 服务器的 Elysia。

在开始之前，确保你已经配置了 Better Auth 实例。如果还没有，请查看 [安装指南](/docs/installation)。

### 挂载处理器 [#挂载处理器]

我们需要将处理器挂载到 Elysia 的端点。

```ts
import { Elysia } from "elysia";
import { auth } from "./auth";

const app = new Elysia().mount(auth.handler).listen(3000);

console.log(
  `🦊 Elysia 正在运行于 ${app.server?.hostname}:${app.server?.port}`,
);
```

### 跨域资源共享 (CORS) [#跨域资源共享-cors]

要配置 CORS，可以使用 `@elysiajs/cors` 插件中的 `cors`。

```ts
import { Elysia } from "elysia";
import { cors } from "@elysiajs/cors";

import { auth } from "./auth";

const app = new Elysia()
  .use(
    cors({
      origin: "http://localhost:3001",
      methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
      credentials: true,
      allowedHeaders: ["Content-Type", "Authorization"],
    }),
  )
  .mount(auth.handler)
  .listen(3000);

console.log(
  `🦊 Elysia 正在运行于 ${app.server?.hostname}:${app.server?.port}`,
);
```

### 宏（Macro） [#宏macro]

你可以使用 [macro](https://elysiajs.com/patterns/macro.html#macro) 和 [resolve](https://elysiajs.com/essential/handler.html#resolve) 来在传递到视图之前提供 session 和用户信息。

```ts
import { Elysia } from "elysia";
import { auth } from "./auth";

// 用户中间件（计算用户和 session 并传递给路由）
const betterAuth = new Elysia({ name: "better-auth" })
  .mount(auth.handler)
  .macro({
    auth: {
      async resolve({ status, request: { headers } }) {
        const session = await auth.api.getSession({
          headers,
        });

        if (!session) return status(401);

        return {
          user: session.user,
          session: session.session,
        };
      },
    },
  });

const app = new Elysia()
  .use(betterAuth)
  .get("/user", ({ user }) => user, {
    auth: true,
  })
  .listen(3000);

console.log(
  `🦊 Elysia 正在运行于 ${app.server?.hostname}:${app.server?.port}`,
);
```

这样你就可以在所有路由中访问 `user` 和 `session` 对象。

