gpt4 book ai didi

javascript - 使用 Passport-local 保护 API

转载 作者:行者123 更新时间:2023-12-03 08:55:09 26 4
gpt4 key购买 nike

我会切入正题。我使用 Passport-local 构建了一个安全的应用程序,并且所有路线都很好地覆盖了。我的应用程序的作用是从 mongo 获取数据并将其作为 api 提供服务,而 api 又提供 d3 图表。现在我的所有网页都是安全的,但我无需登录应用程序即可访问 api。

这是我的页面在route.js中的结构

    app.get('/dashboard', isLoggedIn, function(req, res) {
res.render('dashboard.html', {
user : req.user
});
});

这就是我的 api 代码的样子:

app.get('/api/finanData1', function(req, res) {
// use mongoose to get all nerds in the database
Subjects.find({}, {'_id': 0}, function(err, subjectDetails) {
// if there is an error retrieving, send the error.
// nothing after res.send(err) will execute
if (err)
res.send(err);
else
res.json(subjectDetails); // return all nerds in JSON format
});
});

我尝试对 API 代码进行建模,但没有成功。非常感谢对此的任何帮助。

谢谢。

编辑回答 isLoggedIn 中间件的问题,我将 api 代码修改为:

     app.get('/api/finanData1', isLoggedIn, function(req, res) {
// use mongoose to get all nerds in the database
Subjects.find({}, {'_id': 0}, function(err, subjectDetails) {
// if there is an error retrieving, send the error.
// nothing after res.send(err) will execute
if (err)
res.send(err);
else
// return all nerds in JSON format
res.json(subjectDetails, {
user : req.user
});
});
});

现在,当我尝试在未登录的情况下访问 api 时,我会被带到完美的登录页面。但登录应用程序后,我的图表没有填充。如果我在登录时打开 api 链接,我将收到此响应,而不是应该存在的 json 数据:

 {"user":{"_id":"55f2f701f26336d85c28012b","__v":0,"local":{"password":"$2a$08$Z69k5PqxWQi5jxFNm2g/xOIAG/QG9L1ud/lO0kJHhDWQWPm2Zfl4e","email":"anmol.koul@wincere.com"}}}

我也应该共享我的服务器文件吗?

最佳答案

您从 api 获得的响应正是您传递给 json 响应助手的响应:

{ user : user_serialized }

将 res.json 行更改回仅返回结果:

res.json(subjectDetails)

如果您除了数据之外还需要用户,则必须返回一个更复杂的对象,然后映射到客户端上的数据属性来绘制图表:

var response = {
data: subjectDetails,
user: req.user
};

res.json(response);

关于javascript - 使用 Passport-local 保护 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32532205/

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