в течение нескольких недель я начал проект, используя node.js и express.js , я также добавил React объекты вфронт.
Я разработал полный менеджер сессий, используя express-session и connect-mongodb-session , и он прекрасно работает.
У меня осталось однодобавить сейчас, чтобы все настроить: next.js .И тут мне становится немного сложнее.
Моя цель - сделать то же самое, что у меня сейчас, но с плавным переходом между страницами.
Я начал использовать официальный пример из git: https://github.com/zeit/next.js/tree/canary/examples/custom-server-express
Что очень приятно.Но страницы в / page являются публичными?Кто-то может получить к ним доступ, введя свой адрес, что не очень хорошо, потому что сессии должны быть полностью водонепроницаемыми.
Мое первое решение - называть их случайными именами, чтобы люди не могли получить к ним доступ напрямую, но это не очень аккуратно... И они все еще могли бы обойти ... Это заставило бы меня написать что-то вроде этого:
server.get('/nice_name', (req, res) => {
console.log('loaded') return app.render(req, res, '/uoiuouiorlos_ugly_random_name', req.query) })
Мое другое решение - создать маршрут для их адреса и вызова (req, res, next) => next ()
Это может работать, но ... это мило?
Другое решение - отредактировать next.config.js и написать: module.exports = {useFileSystemPublicRoutes: true,}
это прекрасно работает, но тогда каждая страница загружается так, как они обычно делают ... Так какой в этом смысл?
const express = require('express')
const next = require('next')
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
console.log('page loaded')
app.prepare().then(() => {
const server = express()
server.get('/', (req, res) => {
console.log('loaded')
return app.render(req, res, '/1A', req.query)
})
server.get('/space2', (req, res) => {
console.log('loaded')
return app.render(req, res, '/2A', req.query)
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(port, err => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})
Я новичок, использующий следующий, спасибо взаранее за вашу помощь!