我正在考虑使用Algolia的安全API密钥功能来限制我的用户和#39;查询特定地理区域(例如,在其本地位置周围50英里)。这个想法是用户不应该能够搜索整个系统,只能搜索与它们相关的部分,从而限制数据库的整体暴露。 API是否支持这样的内容,或者我是否需要使用标记功能来执行不太具体的操作,例如,根据用户的家乡状态标记记录("纽约")然后限制基于该标签访问?
答案 0 :(得分:3)
您应该可以通过为每个用户生成具有预填充搜索参数的特定API密钥来实现此目的。
每个键都有一个特定的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。
更多信息:
每个其他API客户端都有相同的段落。