避免在Express中重复进行记录控制

编程入门 行业动态 更新时间:2024-10-14 08:24:49

避免在<a href=https://www.elefans.com/category/jswz/34/1771445.html style=Express中重复进行记录控制"/>

避免在Express中重复进行记录控制

我有下面的原始后端代码,不知道如何避免在每个Web服务中重复登录控件,谢谢;

app.post("/createEvent", function(req, res) {

    // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }
});

app.post("/readEvent", function(req, res) {
     // LOGGED IN CONTROL
     if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }
});

app.post("/updateEvent", function(req, res) {

  // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }

});

app.post("/deleteEvent", function(req, res) {

  // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }

}

我想我应该在外部函数中包含代码吗?

回答如下:

使其成为中间件:

function requiresAuth (req, res, next) {
    // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }
    else {
        next(); // continue the process
    }
}

现在您可以像这样使用它:

app.post("/createEvent", requiresAuth, function(req, res) {});

app.post("/readEvent", requiresAuth, function(req, res) {});

app.post("/updateEvent", requiresAuth, function(req, res) {});

app.post("/deleteEvent", requiresAuth, function(req, res) {});

在其自己的文件中实现,现在您有了一个可以在代码中的任何位置使用的模块。

中间件很灵活。请记住,Express允许您将中间件应用于整个路由:

app.use('/protected/path', requiresAuth, protectedRouter);

其他提示:您可以使用它来实现角色:

function requiresAuth (role) {
    return function (req, res, next) {
        // LOGGED IN CONTROL
        if (!req.session.loggedIn || req.session.role !== role) {
            console.log(" FORBIDDEN ");
            res.status(403).send({ errorCode: "403" });
            return;
        }
        else {
            next(); // continue the process
        }
    }
}

app.post("/createEvent", requiresAuth('USER'), function(req, res) {});

app.post("/readEvent", requiresAuth('USER'), function(req, res) {});

app.post("/updateEvent", requiresAuth('USER'), function(req, res) {});

app.post("/deleteEvent", requiresAuth('ADMIN'), function(req, res) {});

如果需要,您可以实现更复杂的角色逻辑。

更多推荐

避免在Express中重复进行记录控制

本文发布于:2024-05-07 02:26:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754122.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Express

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!