首页 > 解决方案 > 我想在 nodejs 中的 AJAX 调用之前检查会话数据

问题描述

在我的购物车中,我想在 ajax 调用之前检查用户会话数据。

如果用户未登录,我希望他们重定向到登录路线。我创建了一个名为 verifyLogin 的中间件来每次检查这些登录会话,并且在不使用 ajax 时它确实有效。如何将此中间件添加到我的 ajax 函数中?

或者请给我另一个解决方案。

验证登录中间件

const verifyLogin = (req, res, next) => {
  if (req.session.loggedIn) {
    next()
  } else {
    res.redirect('/login')
  }
}

阿贾克斯函数

function addToCart(proId) {
    $.ajax({
        
        url: '/add-to-cart/' + proId,
        method: 'get',
        success: (response) => {
            if (response.status) {
                let count = $('#cart-count').html()
                count = parseInt(count) + 1
                $("#cart-count").html(count)

            }
        }
    })
}

添加到购物车的JS文件路径

router.get('/add-to-cart/:id', (req, res) => {
  userHelpers.addToCart(req.params.id, req.session.user._id).then(() => {
    res.json({ status: true })
  })
})

标签: node.jsajax

解决方案


您可以通过是否设置来检查指定的会话 cookie 参数document.cookie- 您已登录,否则 - 您未登录。或者,您可以添加额外的 cookie 参数来指示您是否成功登录。您需要进行此检查放在ajax调用之前。中间件层每次都会为您的服务器的任何请求工作。但是,例如,仅当用户尝试将某些东西添加到购物车时,您才需要进行检查。


推荐阅读