使用 Express 在 nodeJS 中实现管理面板的最佳方法



我正在使用nodeJS和express制作博客应用程序。我想实现一个管理面板,我可以创建,删除,更新和编辑我的帖子,但我不知道如何对这些管理路由保密以及进行哪种身份验证。我是否使用管理员密码在数据库上仅使用一行 (mongodb( 进行收集,还是将我想要的用于管理员身份验证的密码保存在单独的文件中?这足够安全吗?我应该只在代码上的 if 语句上保留我想要的密码吗?我将是唯一使用这个系统的人,但我想了解确保它安全的最佳方法。

我更喜欢隔离请求模式并为它们定义单独的身份验证机制。例如。。。

const express = require('express');
const app = express();
const basicAuth = require('express-basic-auth');

app.use('/web/*', basicAuth({
users: authKeys
}));
app.use('/restrict/*', basicAuth({
users: adminAuthKeys
}));

。任何通过/web/*访问我的网站的普通用户都定义了与通过/restrict/*访问该网站的管理员不同的身份验证。authKeys包含用户身份验证密钥,adminAuthKeys包含管理员身份验证密钥。然后,我可以根据需要为每个路由定义路由。例如。。。

// For user
app.get('/web/profile', (req, res) => {
...
...
});
// For user
app.get('/web/post/:id', (req, res) => {
...
...
});
// For admin
app.get('/restrict/stats', (req, res) => {
...
...
});
// For admin
app.get('/restrict/dashboard', (req, res) => {
...
...
});

在这里,我展示了带有express-basic-auth的示例,您可以尝试最适合您的身份验证机制。我们通常不会将密码存储在您将在存储库中提交的文件中。密码最好存储在具有正确编码的安全数据库中。对于这个express-basic-auth示例,如果可以初始化架构的 JSON 对象...

const authKeys = {
"some-user-name": "some-password",
"another-user-name": "another-password",
...
...
}
const adminAuthKeys = {
"some-admin-name": "some-password",
"another-admin-name": "another-password",
...
...
}

。通过在应用程序启动期间从存储中获取数据,然后初始化用户和管理员的app.use()块,如图所示,使用express定义basicAuth,我认为它应该可以正常工作。

希望这对:)有所帮助

相关内容

最新更新