Docs

Node Integration

Better Auth can be integrated with node based backed frameworks. The guide below will show you how to integrate Better Auth with express.

Before you start, make sure you have a Better Auth instance configured. If you haven't done that yet, check out the installation.

Mount the handler

To enable Better Auth to handle requests, we need to mount the handler to an API route. Create a catch-all route to manage all requests to /api/auth/* (or any other path specified in your Better Auth options).

server.ts
import express from "express";
import { toNodeHandler } from "better-auth/node";
import { auth } from "./auth";
 
const app = express();
const port = 3005;
 
app.all("/api/auth/*", toNodeHandler(auth));
 
app.listen(port, () => {
	console.log(`Example app listening on port ${port}`);
});

After completing the setup, start your server. Better Auth will be ready to use. You can send a GET request to the /ok endpoint (/api/auth/ok) to verify that the server is running.

Getting the User Session

To retrieve the user's session, you can use the getSession method provided by the auth object. This method requires the request headers to be passed in a specific format. To simplify this process, Better Auth provides a fromNodeHeaders helper function that converts Node.js request headers to the format expected by Better Auth (a Headers object).

Here's an example of how to use getSession in an Express route:

server.ts
import { fromNodeHeaders } from "better-auth/node";
import { auth } from "./auth"; //your better auth instance
 
app.get("/api/me", async (req, res) => {
 	const session = await auth.getSession({
      headers: fromNodeHeaders(req.headers),
    });
	return res.json(session);
});

On this page

Edit on GitHub