Lucia v3

Configuration

This page shows all the options for Lucia to configure Lucia.

interface Options {
	sessionExpiresIn?: TimeSpan;
	sessionCookie?: SessionCookieOptions;
	getSessionAttributes?: (
		databaseSessionAttributes: DatabaseSessionAttributes
	) => _SessionAttributes;
	getUserAttributes?: (databaseUserAttributes: DatabaseUserAttributes) => _UserAttributes;
}

sessionExpiresIn

Configures how long a session stays valid for inactive users. Session expirations are automatically extended for active users. Also see TimeSpan.

import { Lucia, TimeSpan } from "lucia";

const lucia = new Lucia(adapter, {
	sessionExpiresIn: new TimeSpan(2, "w")
});

sessionCookie

Configures the session cookie.

import { Lucia } from "lucia";

const lucia = new Lucia(adapter, {
	sessionCookie: {
		name: "session",
		expires: false, // session cookies have very long lifespan (2 years)
		attributes: {
			secure: true,
			sameSite: "strict",
			domain: "example.com"
		}
	}
});

getSessionAttributes()

Transforms database session attributes, which is typed as DatabaseSessionAttributes. The returned object is added to the Session object.

import { Lucia } from "lucia";

const lucia = new Lucia(adapter, {
	getSessionAttributes: (attributes) => {
		return {
			country: attributes.country
		};
	}
});

declare module "lucia" {
	interface Register {
		Lucia: typeof lucia;
		DatabaseSessionAttributes: DatabaseSessionAttributes;
	}
}

interface DatabaseSessionAttributes {
	country: string;
}

getUserAttributes()

Transforms database user attributes, which is typed as DatabaseUserAttributes. The returned object is added to the User object.

import { Lucia } from "lucia";

const lucia = new Lucia(adapter, {
	getUserAttributes: (attributes) => {
		return {
			username: attributes.username
		};
	}
});

declare module "lucia" {
	interface Register {
		Lucia: typeof lucia;
		DatabaseUserAttributes: DatabaseUserAttributes;
	}
}

interface DatabaseUserAttributes {
	username: string;
}