所以我正在使用https://www.npmjs.com/package/basic-auth,一切正常,但我无法弄清楚我的生活如何!
我的设置很简单,当您进行身份验证时,您是管理员,否则您不是。我想要做的是根据用户是不是管理员,在前端显示某个导航栏。
NodeJS MiddleWare代码:
exports.login = function (req, res, next) {
console.log(req.header);
function unauthorized(res) {
res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
return res.sendStatus(401);
};
var user = basicAuth(req);
if (!user || !user.name || !user.pass) {
return unauthorized(res);
};
if (user.name === 'Admin' && user.pass === 'myPassword') {
return next();
} else {
return unauthorized(res);
};
};
我已经检查了本地存储,cookie,我能想到的所有内容但是一旦登录了基本身份验证,就会自动地出现在标题中。如果我使用不正确的凭据登录,则会返回未授权的对象并将其记录在前端,但如果我正确进行身份验证,则无法看到任何对象。
非常感谢任何帮助。如果您需要任何其他代码等,请告诉我们!
谢谢!
答案 0 :(得分:0)
根据您的代码,如果(!user || !user.name || !user.pass)
,那么您return unauthorized(res);
之前定义了unauthorised
函数,并负责将状态和标头发送回前端。
但是在成功登录(user.name === 'Admin' && user.pass === 'myPassword')
的情况下,您只有return next()
,下一个功能将转移到代码中的下一个中间件。
为了达到你想要的效果,你应该在前端返回一些东西:
if (user.name === 'Admin' && user.pass === 'myPassword') {
res.end('Access granted');
}