@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β
optionalaccountByUserIdPrefix:string
The prefix for the accountByUserId key
accountKeyPrefixβ
optionalaccountKeyPrefix:string
The prefix for the account key
baseKeyPrefixβ
optionalbaseKeyPrefix:string
The base prefix for your keys
emailKeyPrefixβ
optionalemailKeyPrefix:string
The prefix for the emailKey key
sessionByUserIdKeyPrefixβ
optionalsessionByUserIdKeyPrefix:string
The prefix for the sessionByUserId key
sessionKeyPrefixβ
optionalsessionKeyPrefix:string
The prefix for the sessionKey key
userKeyPrefixβ
optionaluserKeyPrefix:string
The prefix for the user key
verificationTokenKeyPrefixβ
optionalverificationTokenKeyPrefix:string
The prefix for the verificationToken key