Skip to main content

@auth/unstorage-adapter

Official Unstorage adapter for Auth.js / NextAuth.js.

Installation​

npm install unstorage @auth/unstorage-adapter

UnstorageAdapter()​

UnstorageAdapter(storage, options): Adapter

Setup​

Configure Auth.js to use the Unstorage Adapter:

pages/api/auth/[...nextauth].js
import NextAuth from "next-auth"
import GoogleProvider from "next-auth/providers/google"
import { UnstorageAdapter } from "@auth/unstorage-adapter"
import { createStorage } from "unstorage";

const storage = createStorage();

export default NextAuth({
adapter: UnstorageAdapter(storage),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
})

Advanced usage​

Using multiple apps with a single storage​

If you have multiple Auth.js connected apps using the same storage, you need different key prefixes for every app.

You can change the prefixes by passing an options object as the second argument to the adapter factory function.

The default values for this object are:

const defaultOptions = {
baseKeyPrefix: "",
accountKeyPrefix: "user:account:",
accountByUserIdPrefix: "user:account:by-user-id:",
emailKeyPrefix: "user:email:",
sessionKeyPrefix: "user:session:",
sessionByUserIdKeyPrefix: "user:session:by-user-id:",
userKeyPrefix: "user:",
verificationTokenKeyPrefix: "user:token:",
}

Usually changing the baseKeyPrefix should be enough for this scenario, but for more custom setups, you can also change the prefixes of every single key.

Example:

export default NextAuth({
...
adapter: UnstorageAdapter(storage, {baseKeyPrefix: "app2:"})
...
})

Using getItemRaw/setItemRaw instead of getItem/setItem​

If you are using storage that supports JSON, you can make it use getItemRaw/setItemRaw instead of getItem/setItem.

This is an experimental feature. Please check unjs/unstorage#142 for more information.

You can enable this functionality by passing useItemRaw: true (default: false) in the options object as the second argument to the adapter factory function.

Example:

export default NextAuth({
...
adapter: UnstorageAdapter(storage, {useItemRaw: true})
...
})

Parameters​

β–ͺ storage: Storage< StorageValue >

β–ͺ options: UnstorageAdapterOptions= {}

Returns​

Adapter


UnstorageAdapterOptions​

This is the interface of the Unstorage adapter options.

Properties​

accountByUserIdPrefix​

accountByUserIdPrefix?: string

The prefix for the accountByUserId key

accountKeyPrefix​

accountKeyPrefix?: string

The prefix for the account key

baseKeyPrefix​

baseKeyPrefix?: string

The base prefix for your keys

emailKeyPrefix​

emailKeyPrefix?: string

The prefix for the emailKey key

sessionByUserIdKeyPrefix​

sessionByUserIdKeyPrefix?: string

The prefix for the sessionByUserId key

sessionKeyPrefix​

sessionKeyPrefix?: string

The prefix for the sessionKey key

useItemRaw​

useItemRaw?: boolean

Use getItemRaw/setItemRaw instead of getItem/setItem.

This is an experimental feature. Please check unjs/unstorage#142 for more information.

userKeyPrefix​

userKeyPrefix?: string

The prefix for the user key

verificationTokenKeyPrefix​

verificationTokenKeyPrefix?: string

The prefix for the verificationToken key