Javascript 在使用Express的Node.js中,根据用户凭据限制对路由的访问
在express应用程序中,用户使用其web身份(google、facebook、amazon等)登录passport.js进行此操作。我已经创建了一条路线。但我们只希望单个用户可以访问它。 我对它进行了广泛的测试,但不完全确定它是否足够安全? 这是我的路线代码:Javascript 在使用Express的Node.js中,根据用户凭据限制对路由的访问,javascript,node.js,express,authentication,passport.js,Javascript,Node.js,Express,Authentication,Passport.js,在express应用程序中,用户使用其web身份(google、facebook、amazon等)登录passport.js进行此操作。我已经创建了一条路线。但我们只希望单个用户可以访问它。 我对它进行了广泛的测试,但不完全确定它是否足够安全? 这是我的路线代码: app.get("/superSecretPage", function(req, res){ console.log(req.user); if (req.isAuthenticated()){ if (req.us
app.get("/superSecretPage", function(req, res){
console.log(req.user);
if (req.isAuthenticated()){
if (req.user.userId === "XXXXXXXXXXXXXXXX") {
User.find({}, function(err, users){
res.render("userlist", {
users: users,
});
});
} else {
res.render("invalid")
}
} else {
res.redirect("login")
}
});
XXXXXXXXXXXXXX=是来自Google/Amazon/Facebook或其他ID提供商的用户唯一ID
正如我所说,这是可行的,并且只允许用户等于req.user.userId,但是这足够安全吗?这不是一种正确的方法。如果您想稍后允许其他用户,您将怎么做?是否打开代码并编辑
用户Id
不要硬编码用户ID
你需要实施。您需要创建一个超级超级用户角色,并将其分配给希望允许其访问您的超级机密页面的用户。并使用中间件检查角色权限
这将帮助您:
这不是一种正确的方法。如果您想稍后允许其他用户,您将怎么做?是否打开代码并编辑
用户Id
不要硬编码用户ID
你需要实施。您需要创建一个超级超级用户角色,并将其分配给希望允许其访问您的超级机密页面的用户。并使用中间件检查角色权限
这将帮助您:
就像我说的,这是可行的,只允许用户等于req.user.userId,但是这足够安全吗
你还没有真正表现出足够的能力来了解这个系统的整体安全性。安全性至少取决于以下方面:
req.isAuthenticated()的实现
req.user.userId
。你没有展示这一点,所以我们真的不知道这背后是什么,也不知道它是否遵循良好的安全实践req.user.userId
有效,并且此连接属于该userId的相应用户,则此代码位工作正常。但是,麻烦在于确保req.user.userId
正确连接到授权用户的细节,而这正是安全工作的难点所在
就像我说的,这是可行的,只允许用户等于req.user.userId,但是这足够安全吗
你还没有真正表现出足够的能力来了解这个系统的整体安全性。安全性至少取决于以下方面:
req.isAuthenticated()的实现
req.user.userId
。你没有展示这一点,所以我们真的不知道这背后是什么,也不知道它是否遵循良好的安全实践如果您100%确定
req.user.userId
有效,并且此连接属于该userId的相应用户,则此代码位工作正常。但是,麻烦在于确保req.user.userId
正确连接到授权用户的细节,而这正是安全工作的难点所在。在db模式中添加一个字段,并将其设置为一个数组,其中包含用户有权访问的所有路由。验证循环时,通过数组查看他/她是否可以访问他/她尝试访问的路由。在db架构中添加一个字段,并将其设置为包含用户有权访问的所有路由的数组。验证时,通过阵列循环以查看他/她是否可以访问他/她正在尝试的路由。谢谢!但在这种情况下,我只希望这一个用户(我)拥有访问权限。如果是这样的话,它仍然不是一个很好的访问实现吗?当然不是。但是不要硬编码这些值。因为我仍然在学习这些,我还有一个问题要问你。如果我把userID放在一个.env文件中会更好吗?另外,在安全方面,是否有可能另一个用户欺骗同一个用户ID来访问“秘密页面”谢谢!但在这种情况下,我只希望这一个用户(我)拥有访问权限。如果是这样的话,它仍然不是一个很好的访问实现吗?当然不是。但是不要硬编码这些值。因为我仍然在学习这些,我还有一个问题要问你。如果我把userID放在一个.env文件中会更好吗?另外,在安全方面,是否有可能另一个sp