Как удалить файл cookie в промежуточном программном обеспечении Next.js 14 после проверки внешнего API

Я создаю приложение с помощью Next.js 14 и столкнулся с проблемой управления файлами cookie в моем промежуточном программном обеспечении. Цель – выполнить внешний вызов API для проверки токена пользователя. Если проверка не удалась (это означает, что токен недействителен), я хочу удалить определенный файл cookie, поскольку он указывает на то, что сеанс истек или недействителен.

Я реализовал функцию промежуточного программного обеспечения, которая вначале запускаетverifyUser для проверки токена. Если токен недействителен, я пытаюсь удалить файл cookie с помощью функции removeUser. Однако файл cookie не удаляется должным образом.

Вот соответствующий фрагмент кода для моего промежуточного программного обеспечения:

import { NextResponse } from 'next/server';
import { verifyUser } from '@/lib';

export async function middleware(request) {
    await verifyUser(request)

    // Middleware logic here to proctect pages
}

export const config = {
    matcher: [
        '/',
        '/dashboard',
        '/login',
    ],
}

А вот функцияverifyUser вместе с функцией removeUser, которая пытается удалить файл cookie:

export async function verifyUser(request) {
    // API call and token validation logic
    if (!data.success) {
        console.info('unsuccessful');
        removeUser();
    }
}

function removeUser() {
    const response = NextResponse.next();
    response.cookies.set({
        name: 'netlify',
        value: '',
        expires: new Date(0),
    })
    return response;
}

Мои вопросы:

  • Как я могу правильно удалить файл cookie из функции промежуточного программного обеспечения в Next.js 14, когда внешний API указывает, что токен пользователя недействителен?
  • Есть ли лучший подход к структурированию этой логики проверки токенов и управления файлами cookie в промежуточном программном обеспечении Next.js?

Будем очень признательны за любые рекомендации или предложения по решению этой проблемы.

🤔 А знаете ли вы, что...
React Hooks - это механизм, введенный в React 16.8, для управления состоянием компонентов функциональным способом.


1
1 229
2

Ответы:

Решено

Как я могу правильно удалить файл cookie из функции промежуточного программного обеспечения в Next.js 14, когда внешний API указывает, что токен пользователя недействителен?

Вы можете использовать метод .delete(key):

function removeUser() {
    const response = NextResponse.next();
    response.cookies.delete('netlify')
    return response;
}

Полезно знать: удалять файлы cookie можно только в действии сервера или обработчике маршрута.

https://nextjs.org/docs/app/api-reference/functions/cookies