微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用节点 js 中的护照在身份验证墙后面隐藏多个网页?

如何解决使用节点 js 中的护照在身份验证墙后面隐藏多个网页?

我正在制作一个网站,我只希望用户能够在登录时发布列表或访问列表。到目前为止,我已经设法使登录工作以发布列表,但是我拥有我的方式服务器设置 我不确定如何使登录过程适用于多个实例。

在我将在下面附加的服务器代码中,我根据隐藏页面登录状态进行了重定向,该页面为 'SellCrypto.ejs' 。我想设置另一条路线,如果我尝试访问另一个页面,例如“BuyCrypto”,它将检查登录状态,然后重定向到该隐藏页面

这是我使用 Express、节点 js 和通行证 js 的服务器代码

if (process.env.NODE_ENV !== 'production') {
    require('dotenv').config()
}

const bcrypt = require('bcrypt')
const passport = require('passport')
const flash = require('express-flash')
const session = require('express-session')
const methodoverride = require('method-override')

const initializePassport = require('./passport-config')
initializePassport(
    passport,email => users.find(user => user.email === email),id => users.find(user => user.id === id)
)

const users = []


app.set('view-engine','ejs')
app.use(express.urlencoded({ extended: false }))
app.use(flash())
app.use(session({
    secret: process.env.SESSION_SECRET,resave: false,saveUninitialized: false
}))
app.use(passport.initialize())
app.use(passport.session())
app.use(methodoverride('_method'))


app.get('/Sell',checkAuthenticated,(req,res) => {
    res.render('SellCrypto.ejs',{ name: req.user.name })
})

app.get('/login',checkNotAuthenticated,res) => {
    res.render('login.ejs')
})

app.post('/login',passport.authenticate('local',{
    successRedirect: '/Sell',failureRedirect: '/login',failureFlash: true
}))

app.get('/register',res) => {
    res.render('register.ejs')
})

app.post('/register',async (req,res) => {
    try {
        const hashedPassword = await bcrypt.hash(req.body.password,10)
        users.push({
            id: Date.Now().toString(),name: req.body.name,email: req.body.email,password: hashedPassword
        })
        res.redirect('/login')
    } catch {
        res.redirect('/register')
    }
})

app.delete('/logout',res) => {
    req.logout()
    res.redirect('/index.html')
})

function checkAuthenticated(req,res,next) {
    if (req.isAuthenticated()) {
        return next()
    }

    res.redirect('/login')
}

function checkNotAuthenticated(req,next) {
    if (req.isAuthenticated()) {
        return res.redirect('/Sell')
    }
    next()
}

感谢您的帮助,我是 Web 开发新手,还有很多东西要学。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。