我正在考虑使用 Algolia 的 Secured API Keys 功能将我的用户的查询限制在特定的地理区域(例如,他们家附近 50 英里)。这个想法是用户不应该能够搜索整个系统,只能搜索与他们相关的部分,从而限制了数据库的整体公开。API 是否支持这样的事情,或者我是否需要使用标记功能来做一些不太具体的事情,例如,按用户的家乡(“纽约”)标记记录,然后根据该标记限制访问?
问问题
198 次
1 回答
3
您应该能够通过为每个用户生成具有预填充搜索参数的特定 API 密钥来做到这一点。
每个键都有一个特定的 around lat lng 参数和一个特定的半径。
用户将无法欺骗密钥以使用不同的预填充搜索参数。但是您仍然可以使用不同的参数(未预填充)。
首先,您需要在仪表板中创建一个新的仅搜索 API 键。
然后,例如使用 JavaScript (node.js) 客户端:
var public_key = client.generateSecuredApiKey('YourSearchOnlyApiKey', {aroundLatLng: '43.0909,23.99898', aroundRadius: 50 * 1000});
然后在前端,在浏览器中,使用这个新的 api 密钥,您的用户将只能搜索提供的纬度经度周围 50 公里半径的项目。
您可以使用任何地理搜索参数https://www.algolia.com/doc/rest#geo-search-parameters。
更多信息:
- https://www.algolia.com/doc/tutorials/security
- https://github.com/algolia/algoliasearch-client-js#security--user-api-keys
每个其他 API 客户端都有相同的段落。
于 2016-01-05T09:30:52.460 回答