@auth/upstash-redis-adapter
Official Upstash Redis adapter for Auth.js / NextAuth.js.
Installationβ
- npm
- yarn
- pnpm
npm install @upstash/redis @auth/upstash-redis-adapter
yarn add @upstash/redis @auth/upstash-redis-adapter
pnpm add @upstash/redis @auth/upstash-redis-adapter
UpstashRedisAdapter()β
UpstashRedisAdapter(
client
,options
={}
):Adapter
Setupβ
Configure Auth.js to use the Upstash Redis Adapter:
import NextAuth from "next-auth"
import GoogleProvider from "next-auth/providers/google"
import { UpstashRedisAdapter } from "@auth/upstash-redis-adapter"
import upstashRedisClient from "@upstash/redis"
const redis = upstashRedisClient(
process.env.UPSTASH_REDIS_URL,
process.env.UPSTASH_REDIS_TOKEN
)
export default NextAuth({
adapter: UpstashRedisAdapter(redis),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET
})
]
})
Advanced usageβ
Using multiple apps with a single Upstash Redis instanceβ
The Upstash free-tier allows for only one Redis instance. If you have multiple Auth.js connected apps using this instance, 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: UpstashRedisAdapter(redis, {baseKeyPrefix: "app2:"})
...
})
Parametersβ
Parameter | Type |
---|---|
client | Redis |
options | UpstashRedisAdapterOptions |
Returnsβ
Adapter
UpstashRedisAdapterOptionsβ
This is the interface of the Upstash Redis adapter options.
Propertiesβ
accountByUserIdPrefixβ
optional
accountByUserIdPrefix:string
The prefix for the accountByUserId
key
accountKeyPrefixβ
optional
accountKeyPrefix:string
The prefix for the account
key
baseKeyPrefixβ
optional
baseKeyPrefix:string
The base prefix for your keys
emailKeyPrefixβ
optional
emailKeyPrefix:string
The prefix for the emailKey
key
sessionByUserIdKeyPrefixβ
optional
sessionByUserIdKeyPrefix:string
The prefix for the sessionByUserId
key
sessionKeyPrefixβ
optional
sessionKeyPrefix:string
The prefix for the sessionKey
key
userKeyPrefixβ
optional
userKeyPrefix:string
The prefix for the user
key
verificationTokenKeyPrefixβ
optional
verificationTokenKeyPrefix:string
The prefix for the verificationToken
key