gpt4 book ai didi

javascript - 通过app.use()调用认证中间件

转载 作者:行者123 更新时间:2023-11-30 11:42:57 27 4
gpt4 key购买 nike

我对 node js 有点陌生,所以我对 app.js 配置的所有概念都不清楚。因此向社区寻求一些帮助。

目前我在 app.js 文件中有以下代码作为身份验证的中间件。

          var authChecker = function(req, res, next){
if(req.query && (req.query.userName || req.query.username)){ // if api query is dependent on the user, validate its token.
try{
var authToken;
req.headers.authorization.split(' ')[0] == "Bearer" ? authToken = req.headers.authorization.split(' ')[1] : "";
var user = jwt.verify(authToken, 'secretkey');
if(req.query.userName == user.username){
next();
}
else{
res.cookie('username', '', {expires: new Date(0)});
res.cookie('token', '', {expires: new Date(0)});
return res.status(401).json({"msg": "Authentication required."});
}
}
catch(err){ // if not able to validate the token, then expire all the available token
res.cookie('username', '', {expires: new Date(0)});
res.cookie('token', '', {expires: new Date(0)});
return res.status(401).json({"msg": "Authentication required."})
}
}
else{
next();
}
};

我在同一个 app.js 文件中使用它来验证一些 API。

          app.namespace('/api', function () {
app.get('/abc', authChecker, abc.cde);

app.get('/cde', efg.ghi); //authentication not required for this API.

现在我想把它模块化。我不想在 app.js 中定义 authChecker,而是希望它在不同的文件中定义,并类似地使用它。任何人都可以在这里帮助我。我认为我们可以通过使用 app.js 以某种方式实现这一点,但不确定具体如何实现。如果您需要更多信息,请告诉我。

最佳答案

创建 auth.js 文件,放入您的代码,然后像这样导出 authChecker 函数

var authChecker = function(req, res, next){
if(req.query && (req.query.userName || req.query.username)){ // if api query is dependent on the user, validate its token.
try{
var authToken;
req.headers.authorization.split(' ')[0] == "Bearer" ? authToken = req.headers.authorization.split(' ')[1] : "";
var user = jwt.verify(authToken, 'secretkey');
if(req.query.userName == user.username){
next();
} else {
res.cookie('username', '', {expires: new Date(0)});
res.cookie('token', '', {expires: new Date(0)});
return res.status(401).json({"msg": "Authentication required."});
}
} catch(err) { // if not able to validate the token, then expire all the available token
res.cookie('username', '', {expires: new Date(0)});
res.cookie('token', '', {expires: new Date(0)});
return res.status(401).json({"msg": "Authentication required."})
}
} else {
next();
}
};

module.exports = {
authChecker: authChecker,
}

app.js 中这样导入

var auth = require('./auth.js'); // path to auth.js file
app.get('/abc', auth.authChecker, abc.cde);

在此处了解有关 nodejs 模块的更多信息:https://nodejs.org/api/modules.html

关于javascript - 通过app.use()调用认证中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963535/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com