簡體   English   中英

使用next.js和express.js以及使用會話的最佳實踐是什么?

[英]What are the best practices to work with next.js and express.js and use sessions

幾周以來,我已經使用node.jsexpress.js開始了一個項目,我還在前面添加了React對象。

我使用express-sessionconnect-mongodb-session開發了一個完整的會話管理器,它運行得很好。

我現在要添加一件事來設置所有內容: next.js 在這里,它對我來說有點復雜。

我的目的是擁有與現在相同的東西,但頁面間平滑過渡。


我開始使用git中的官方示例: https//github.com/zeit/next.js/tree/canary/examples/custom-server-express

哪個非常好。 但/頁面中的頁面是公開的嗎? 有人可以通過輸入他們的地址來訪問它們,這不是很好,因為會話應該完全防水。

我的第一個解決方案是將它們稱為隨機名稱,以便人們無法直接訪問它們,但它不是很整潔......而且它們仍然可以工作...這會讓我寫下這樣的東西:

 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}`)
})
})

我是初學者,請提前感謝您的幫助!

現在重定向到名為404.js的頁面如果人們試圖訪問實際頁面工作正常

express.get('/', (req, res) => {
    return app.render(req, res, '/landing_page', req.query);
})

express.get('/landing_page', (req, res) => {
        return app.render(req, res, '/404', req.query)
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM