我来自express,以前从未使用过next-auth,但不知道如何在redis数据库中存储用户会话。
在express上,我会做以下工作;
import express from 'express';
import session from 'express-session';
import connectRedis from 'connect-redis';
import Redis from 'ioredis';
import { __prod__, COOKIE_NAME } from './constants';
const main = async () => {
const RedisStore = connectRedis(session);
const redis = new Redis(process.env.REDIS_URL);
app.use(
session({
name: 'qid',
store: new RedisStore({
client: redis,
disableTouch: true,
ttl: 1000 * 60 * 60 * 24 * 365, // 1 year
}),
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 365, // 1 year
httpOnly: true,
sameSite: 'lax',
secure: __prod__,
domain: __prod__ ? process.env.DOMAIN : undefined,
},
saveUninitialized: false,
secret: process.env.SESSION_SECRET,
resave: false,
}),
);
};
main()...nextauth.ts
import NextAuth, { type NextAuthOptions } from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";
import { PrismaAdapter } from "@next-auth/prisma-adapter";
import { prisma } from "../../../server/db/client";
export const authOptions: NextAuthOptions = {
callbacks: {
session({ session, user }) {
if (session.user) {
session.user.id = user.id;
}
return session;
},
},
adapter: PrismaAdapter(prisma),
providers: [
CredentialsProvider({
async authorize(credentials, req) {
//
},
}),
],
};
export default NextAuth(authOptions);我找不到redis在NextAuth中的任何实现,除了使用Upstash进行缓存之外,但对于会话却找不到。
发布于 2022-09-04 18:09:18
我为Next制作了一个适配器,它使用ioredis将数据存储在哈希数据结构中。在Upstash适配器中,它们使用JSON.stringify存储数据。在我的适配器中,我使用了哈希数据结构,以便更容易地扩展User对象。你可以看看这个储存库。
https://stackoverflow.com/questions/73099562
复制相似问题