小编Ank*_*rma的帖子

NextJS 与 next-auth,设置从 node.js 接收的 cookie

我正在使用 Nextjs 和 next-auth 在后端使用 node.js 进行身份验证。现在,我在 node.js 中设置 cookie,它在 postman 中可以正常工作。我可以验证,没有任何问题。当谈到 NextJs 时,由于我只res.data从响应中返回 ,它本质上包含用户数据而不是 JWT ,所以我无法将 cookie 传递到前端。因此,我没有对 Node.js 进行身份验证。我检查了 next-auth 上的 cookie 文档,但无法使其工作。

代码为./api/[...nextauth.ts]

import axios from 'axios'
import NextAuth from 'next-auth'
import Providers from 'next-auth/providers'

export default NextAuth({
  // Configure one or more authentication providers
  providers: [
    Providers.Credentials({
      name: 'Credentials',
      credentials: {
        email: { label: "Email", type: "email", placeholder: "Your email" },
        password: { label: "Password", type: "password",placeholder: "*********" }
      },
      async authorize(credentials:any, req) …
Run Code Online (Sandbox Code Playgroud)

cookies server-side-rendering next.js next-auth

9
推荐指数
2
解决办法
3万
查看次数

交易函数参数类型

我想使用,$transaction但我不知道应该将什么类型传递给 Prisma,以便它为我提供模型的类型检查和自动完成功能。

export default async function SignUp(data: SIGNUP_INTERFACE) {
  try {
    let user = await prisma.$transaction(async (prisma: any /* <- this */) => {
      let encrypted_password = await bcrypt.hash(data.password, 10);
      // 1. Add user to database
      const user = await prisma.user.create({
        data: {
          username: data.username,
          password: encrypted_password,
        },
      });

      // 2. Add email/phone number to database
      if (data.phoneNumber) {
        await prisma.user_phone.create({
          data: { phone_number: data.phoneNumber },
        });
      }
      if (data.email) {
        await prisma.user_email.create({
          data: { email: data.email }, …
Run Code Online (Sandbox Code Playgroud)

prisma prisma-transaction

6
推荐指数
1
解决办法
2011
查看次数

从一个容器到另一个容器进行 API 调用

我有一个节点应用程序、一个用于前端的 next.js 应用程序、Redis 和 Postgres 作为数据库。我已经在不同的容器中对 Next.js 和 node.js 进行了 Docker 化。Docker-compose.yaml如下

version: '3'
services: 
  redis-server:
    image: 'redis'
    restart: always
  postgres-server:
    image: 'postgres:latest'
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=postgres
    ports: 
      - "5433:5432"
    volumes:
        - ./docker/postgres/data/data/pg_hba.conf:/var/lib/postgresql/app_data/pg_hba.conf
        - ./src/db/sql/CREATE_TABLES.sql:/docker-entrypoint-initdb.d/CREATE_TABLES.sql
        - ./src/db/sql/INSERT_TO_TABLES.sql:/docker-entrypoint-initdb.d/INSERT_TO_TABLES.sql
        - ./src/db/sql/CREATE_FUNCTIONS.sql:/docker-entrypoint-initdb.d/CREATE_FUNCTIONS.sql
  node-app:
    build: .
    ports: 
      - "4200:4200" 
  client:
    build:
      context: ./client
      dockerfile: Dockerfile
    container_name: client
    restart: always
    volumes:
      - ./:/app
      - /app/node_modules
      - /app/.next
    ports:
      - 3000:3000
Run Code Online (Sandbox Code Playgroud)

使用 SSR 时,我无法向 localhost:4200 发出请求。现在,我知道这是因为它们位于不同的容器中,如果请求不是来自客户端,则将在端口 4200 处检查客户端容器的服务器。现在,我不知道如何简单地使用容器名称或其他内容来引用容器来对 SSR 数据发出 API 请求(例如fetch('node-app/users') …

docker-compose server-side-rendering next.js docker-network

5
推荐指数
1
解决办法
6941
查看次数