我即将开始使用Flask + AngularJS的新项目,这是第一次使用这种混合体验。但我的问题与我选择的平台/框架无关。
有很多情况会向用户呈现某些项目列表,用户可以点击其中一个项目进行浏览。当然,通过向项目客户端传递项目数据库ID列表来提供这样的功能,并且通过其id来请求项目信息来进行浏览。但是,我对让用户通过它检索某些信息感到不安。可能存在用户无权打开某个项目的情况。
所以,我有两个问题:
- 将数据库对象ID共享给客户端是个好主意吗?这肯定更容易,但是它不会为恶意登录用户显示太多信息吗?另一种方法是为每个可点击项生成一个唯一的ID,并在服务器端保留这些ID所代表的字典。感觉非常麻烦(更不用说额外的处理开销),但也许这值得痛苦?
- 如果我要向客户端显示项目数据库ID,那么我仍应保留向客户端显示的项目列表(在此会话中),并让用户仅浏览这些项目。因此,如果用户“没有合法的方式访问它”,则将停止通过直接在URL(或POST请求)中输入其ID来浏览项目的任何尝试。这个技术有没有名称,所以我可以阅读最佳实践如何实现它?