我在我的应用程序中运行Node.Js / Express.Js时出现用户身份验证问题
基本上,当用户登录主界面(html)时,会显示一个图表,该图表是通过API路径(/ api / data / json)获得的,这也需要通过
进行身份验证。 exports.auth = express.basicAuth(User.authenticate);
在routes / api.js
中我尝试通过传递res.locals.user
参数之一来“告诉”路由/ api.js用户已被授权,但它没有帮助......
所以我的问题是:在Node.Js中是否有任何方法可以将用户的登录详细信息存储在会话变量中(例如,您可以在PHP中执行),以便在需要授权时将其传递给所有组件,避免用户在访问应用的其他部分时需要重新授权?
谢谢!
答案 0 :(得分:1)
basicAuth中间件在身份验证成功时使用用户名填充req.user
。检查用户是否在之后出现的任何中间件上进行了身份验证,例如在routes/api.js
中,您所要做的就是检查是否定义了req.user
:
if (req.user) {
// User is already auth'ed; provide secret data
} else {
// Proceed to next middleware to provide a standard error message
next();
}
或者,您也可以使用res.redirect('/goToOtherpage')
重定向到另一条路线,或者您可以使用res.send(401)
的HTTP错误回复,向来电者发出Unauthorized
信号。
答案 1 :(得分:0)
不确定这是否有用,但您可以挂钩到HTML5会话存储。这是一篇文章进一步介绍。
http://www.nczonline.net/blog/2009/07/21/introduction-to-sessionstorage/
以下是一篇关于如何使用它的文章的例子。
//save a value
sessionStorage.setItem("name", "Nicholas");
//retrieve item
var name = sessionStorage.getItem("name");
//get the key name for the first item
var key = sessionStorage.key(0);
//remove the key
sessionStorage.removeItem(key);
//check how many key-value pairs are present
var count = sessionStorage.length;