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
и вы не вошли в систему, вы получаете:
А если вы:
Я думаю, зачем вам защищать такой маршрут?
Я ошибся?