javascript - 如何分离 session 控制而不是将其写在每个路由中

标签 javascript node.js session express

我正在使用 Express 开发 Node.js 应用程序。我正在检查每条路线的 session 。但我想将这种检查与我的路线分开。需要想法。

这是我的路线:

app.get('/Management', function(req, res) {
    if (!req.session.email) {
        return res.render(__dirname + "../../../views/management/accessdenied.jade", {
            title: 'dont have access',
            stylesheet: 'accessdenied',
            error: 'forbidden'
        });
    }
    return res.render(__dirname + "/views/index", {
        title: 'Management',
        stylesheet: 'managementindex'
    });
});

这是我的 session 检查:

if (!req.session.email) {
    return res.render(__dirname + "../../../views/management/accessdenied.jade", {
        title: 'dont have access',
        stylesheet: 'accessdenied',
        error: 'forbidden'
    });
}

最佳答案

制作自己的中间件。这将响应所有获取和发布请求。您将希望它位于所有其他“app.use()”调用(bodyParse、cookieParser 等)的底部

app.use(function(req, res, next) {
    if (!req.session.email) {
        res.render(__dirname + "../../../views/management/accessdenied.jade", {
            title: 'dont have access',
            stylesheet: 'accessdenied',
            error: 'forbidden'
        });
    } else {
        next();
    }
});

关于javascript - 如何分离 session 控制而不是将其写在每个路由中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20800856/

相关文章:

java - 我想在 session 被清除时调用java方法?

javascript - 从底部显示初始内容并在向上滚动时从数据库加载更多行

ios - iOS后台处理蓝牙数据为 'session-based'是什么意思?

javascript - 将异步过程转换为同步过程

javascript - TestCafe 测试脚本 checkbox.checked 即使选中也总是返回 false,如何在 if 条件下检查复选框状态?

node.js - AWS DynamoDb 查询表

node.js - 如何在 AWS js SDK 中配置区域?

java - Facebook Session.openActiveSession(this, true, new Session.StatusCallback() 不起作用

javascript - Reactjs:组件未渲染

javascript - 使用 JavaScript 仅替换 DIV 中的文本内容