我是整个客户端 SPA 世界的新手。我正在使用上述技术,这似乎很有希望。但是,我无法轻易克服的一个巨大障碍是缺乏内置安全性。我不得不手动推出用户授权,恕我直言,这应该是框架的一部分。
现在我已经整理好了,我对垂直安全性感到头疼:一个用户登录但可以通过更改浏览器控制台中的一些参数轻松访问其他用户的信息。我可以在每次调用时传递 userId,然后将其与服务器上的进行比较,但我希望有一个总体解决方案不会污染带有用户 id 的微风数据调用。
例如,假设有来自数据服务的调用,如下所示:
function getItems(){
var query = breeze.EntityQuery.from('Items').expand("Person");
return manager.executeQuery(query);
}
这会得到所有的物品,不好。因此,让我们通过 userId 进行限制:
function getItems(userId){
var query = breeze.EntityQuery.from('Items').where("userId", "==", authentication.userId).expand("Person");
return manager.executeQuery(query);
}
在第二个示例中,我们从身份验证服务中获取 userId,该服务存储了用户登录时的 userId。但是,恶意用户可以轻松访问浏览器控制台并更改该值。
当然,我可以使用 withParameters(...) 传递 userId 并将其与服务器上的当前值进行比较,但我必须为每次调用都这样做,这似乎不对。有没有更好的方法来保护使用受信任的用户 ID 的呼叫?