Next.js: лучше ли защищать / управлять маршрутом пользовательского API, который использует приложение?

Учтите следующее:

Мое приложение использует этот маршрут для сортировки опроса пользователя в компонентах с помощью ловушки через swr, чтобы предоставить им доступ к вещам в пользовательском интерфейсе:

      import useSWR from 'swr';

import axios from 'axios'

export const fetcher = (url) => axios.get(url).then(response => response.data.user).catch(err => {
  if (err.response) {
    const error = new Error('An error occurred while fetching the data.')
    // error.info = await res.json()
    error.status = err.response.status;
    error.data = err.response;
    console.log(`err.response!`, err.response)
    throw error
  }
  return res.json()
})

export function useUser() {
  const { data: user, error, mutate } = useSWR('/api/user', fetcher)
  // if data is not defined, the query has not completed
  const loading = !user
  return {
    user,
    isLoading: loading === undefined ? 'Loading...' : null,
    error,
    mutate
  }
}

В любом случае я наткнулся на NextAuth, и он предоставляет способ защиты маршрутов API.

Итак, мой вопрос указывает на маршрут, который я упомянул в начале сообщения.

      import nextConnect from 'next-connect'
import auth from '../../middleware/auth'

const handler = nextConnect()

handler
  .use(auth)
  .get((req, res) => {
    if (req.user != undefined && req.user.isVerified) {
      const { id, isVerified } = req.user
      res.status(200).send({ user: { id, isVerified } })
    } else {
      res.status(401).json({
        user: null,
      })
    }
  });


export default handler

Прямо сейчас, если ввести в браузере маршрут /api/user и вы не вошли в систему, вы получаете:

А если вы:

Я думаю, зачем вам защищать такой маршрут?

Я ошибся?

0 ответов

Другие вопросы по тегам