@auth/upstash-redis-adapter
Official Upstash Redis adapter for Auth.js / NextAuth.js.
Installation
npm install @upstash/redis @auth/upstash-redis-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
defaultOptions
const defaultOptions: {
accountByUserIdPrefix: "user:account:by-user-id:";
accountKeyPrefix: "user:account:";
baseKeyPrefix: "";
emailKeyPrefix: "user:email:";
sessionByUserIdKeyPrefix: "user:session:by-user-id:";
sessionKeyPrefix: "user:session:";
userKeyPrefix: "user:";
verificationTokenKeyPrefix: "user:token:";
};
Type declaration
accountByUserIdPrefix
accountByUserIdPrefix: string = "user:account:by-user-id:";
accountKeyPrefix
accountKeyPrefix: string = "user:account:";
baseKeyPrefix
baseKeyPrefix: string = "";
emailKeyPrefix
emailKeyPrefix: string = "user:email:";
sessionByUserIdKeyPrefix
sessionByUserIdKeyPrefix: string = "user:session:by-user-id:";
sessionKeyPrefix
sessionKeyPrefix: string = "user:session:";
userKeyPrefix
userKeyPrefix: string = "user:";
verificationTokenKeyPrefix
verificationTokenKeyPrefix: string = "user:token:";
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.
export default NextAuth({
adapter: UpstashRedisAdapter(redis, {baseKeyPrefix: "app2:"})
})
Parameters
Parameter | Type |
---|---|
client | Redis |
options | UpstashRedisAdapterOptions |
Returns
hydrateDates()
hydrateDates(json): any
Parameters
Parameter | Type |
---|---|
json | object |
Returns
any