我们的应用程序有两种类型的用户。根据用户登录的方式,我们希望他们能够访问应用程序的不同部分。
我们如何实现安全模型,以防止用户看到他们无权访问的内容?
我们是否将安全作为每条路由实现的一部分?问题是我们在请求之间会有一些重复的逻辑。我们可以将它移到helper函数中,但我们仍然需要记住调用它。
我们是否将安全性作为全局app.all()路由处理程序的一部分?问题是,我们必须检查每条路由,并基于大量规则执行不同的逻辑。至少所有的代码都在一个地方,但是...所有的代码都在一个地方。
发布于 2012-03-08 05:46:52
对我来说,每条路线都可以使用它。这是我通常要做的:
function requireRole (role) {
return function (req, res, next) {
if (req.session.user && req.session.user.role === role) {
next();
} else {
res.send(403);
}
}
}
app.get("/foo", foo.index);
app.get("/foo/:id", requireRole("user"), foo.show);
app.post("/foo", requireRole("admin"), foo.create);
// All bars are protected
app.all("/foo/bar", requireRole("admin"));
// All paths starting with "/foo/bar/" are protected
app.all("/foo/bar/*", requireRole("user"));
发布于 2012-03-21 21:50:11
您可以对每个身份验证使用CanCan js,这非常类似于Rails https://github.com/scottkf/ability-js的CanCan
发布于 2014-03-19 20:58:28
看看NodeJS访问控制列表/权限系统的this list。我觉得OptimalBits node_acl看起来最棒。
https://stackoverflow.com/questions/9609325
复制相似问题