NextAuth.js : Приложение JWT secret прерывает работу

#jwt #next.js #strapi #next-auth

#jwt #next.js #страпи #далее-auth

Вопрос:

[Я использую Next.js (11.1.2) NextAuth (4.0.0-beta.7) для входа в API Strapi, используя только поставщик учетных данных (JWT).]

Весь поток аутентификации «работает» с этим [...nextauth].js :

 import NextAuth from "next-auth"
import CredentialsProvider from 'next-auth/providers/credentials'

export default NextAuth({
  providers: [
    CredentialsProvider({
      name: 'AppName',
      credentials: {
        email: {label: "Email", type: "text", placeholder: "daveglow@foomail.com"},
        password: {  label: "Password", type: "password" },
      },
      async authorize(credentials, req) {
        const res = await fetch(process.env.CREDENTIALS_AUTH_URL, {
          method: 'POST',
          body: JSON.stringify(credentials),
          headers: { "Content-Type": "application/json" }
        })
        const user = await res.json()

        if (res.ok amp;amp; user) {
          return user
        }
        return null
      }
    })
  ],
  session: {
    strategy: "jwt",
    maxAge: 30 * 24 * 60 * 60 // 30 days
  },
  pages: {
    signIn: '/signin',
    signOut: '/signin',
    error: '/signin'
  },
})

 

Но через несколько секунд после входа пользователя в систему терминал отображает это сообщение и прерывает сеанс:

 [next-auth][warn][NO_SECRET] https://next-auth.js.org/warnings#no_secret
[next-auth][error][JWT_SESSION_ERROR] https://next-auth.js.org/errors#jwt_session_error decryption operation failed {
  message: 'decryption operation failed',
  stack: 'JWEDecryptionFailed: decryption operation failedn'
 

Итак, я попытался добавить:

 secret: process.env.SECRET, //I've created using $ openssl rand -base64 32
 

Затем я получаю два разных сообщения

Консоль браузера:

 [next-auth][error][CLIENT_FETCH_ERROR] 
https://next-auth.js.org/errors#client_fetch_error
 

VS Code Terminal:

 [next-auth][error][CALLBACK_CREDENTIALS_JWT_ERROR] 
https://next-auth.js.org/errors#callback_credentials_jwt_error Signin in with credentials only supported if JWT strategy is enabled UnsupportedStrategy [UnsupportedStrategyError]: Signin in with credentials only supported if JWT strategy is enabled
 

Я попробовал пару разных вариантов, но это было так запутанно.
И теперь я понятия не имею, что делать. 🙁
Можете ли вы мне помочь?

Комментарии:

1. Возникает ли проблема после повторного развертывания вашего приложения?

2. Нет, я не могу развернуть прямо сейчас, я просто запускаю локально.

Ответ №1:

Я обновился до версии 4.0.1. Исправлена проблема.

Ответ №2:

Вероятно, это ошибка, представленная в бета-версии 7 next-auth, как обсуждалось в https://github.com/nextauthjs/next-auth/issues/3216

Комментарии:

1. Отлично! Спасибо, Дональд

Ответ №3:

Я не эксперт. Но я думаю, что это текущая проблема с библиотекой NEXT auth 4.0.0

Я мог бы решить проблему, используя версию «next-auth»: «^ 3.25.0». и последовал этому руководству