node.js - 我想在 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 })
})
})
解决方案
您可以通过是否设置来检查指定的会话 cookie 参数document.cookie
- 您已登录,否则 - 您未登录。或者,您可以添加额外的 cookie 参数来指示您是否成功登录。您需要进行此检查放在ajax调用之前。中间件层每次都会为您的服务器的任何请求工作。但是,例如,仅当用户尝试将某些东西添加到购物车时,您才需要进行检查。
推荐阅读
- reactjs - 停止加载未使用的库 - ReactJS
- java - Quarkus HTTP Lambda 项目中无法识别 application.yml 属性
- html - 编辑大型 html 文件时是否可以只看到文本?
- r - R中特定日期的散点图
- android - Kotlin (Flutter) - 移除后台服务的 Sticky 通知
- git - 使用 Gitbash/LFS 将 Unreal 项目推送到 Github
- python - Plotly python:多项选择交互式绘图
- meson-build - 介子:按原样复制符号链接而不是复制文件
- flutter - 我可以将项目的根 .gradle 文件夹添加到 .gitignore 文件吗?
- authentication - 如何针对单个应用程序对来自不同领域的用户进行身份验证?