firebase - 您可以使用 Firestore 读取请求发送数据吗?
问题描述
我想为未登录的用户提供通过发送的令牌查看其数据的选项,该令牌会在一段时间后过期。
令牌创建和发送部分已完成,现在我看到两个选项:在函数中执行所有操作或使用 firestore 规则。规则会更好,因为直接数据库读取更快。
例如,我有一个用户集合,其中的用户如下所示:
{
name: 'test',
token: '1234',
expiresAt: <someTimeInFuture>
}
我的规则如下所示:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow get: request.auth.uid == userId;
allow update: request.auth.uid == userId;
allow list: if false;
allow create, delete: if false;
}
}
}
有没有办法扩展get
规则,以便在读取请求中发送该令牌的用户可以查看数据。或者更好地说:我可以将令牌与我的读取请求一起发送,以便我可以在规则中查看它吗?
请记住,自定义声明不是一个选项,因为用户没有登录。
解决方案
安全规则不支持客户端可以简单地在验证请求中发送自定义数据的想法。这实际上根本不是“安全的”。这就像要求某人提供可以在互联网上任何地方共享的密码。您将需要一个后端端点来执行此操作,但请记住,它也会有相同的安全问题。
推荐阅读
- angular - Angular HttpClient 向 Spring REST API 发布请求未知错误
- python - 为什么在这种情况下,python 的 strip 和 lstrip 方法的行为不符合预期?
- javascript - Slack 为用户请求权限
- javascript - 如何获取 32 位整数的位长度
- javascript - 如何在测试脚本中动态更新 ResponseBody?
- javascript - 在 Node-RED 的函数节点中使用 javascript 内置函数
- firefox - 如何创建更改新标签页行为的 Firefox 扩展程序?
- dart - 小部件库在颤动中捕获的异常
- python - 未按预期获得 XML 输出
- java - 调用方法时参数与方法类中的格式完全相同时不兼容