Max*_*uer 1 firebase google-cloud-platform google-cloud-functions google-cloud-firestore
使用firestore时是否可以通过context.auth属性获取触发云功能的用户的uid?
exports.updateReport = functions.firestore
.document('groups/{groupId}/reports/{nursingId}')
.onUpdate((change, context) => {
const uid : string | undefined = context.auth?.uid;
})
Run Code Online (Sandbox Code Playgroud)
我发现很多关于同一问题的老问题有许多不同的答案。(该功能有效,该功能有时会工作,或者该功能永远不会工作)
在我的本地设置中,我context.auth总是未定义,所以我不知道我是否犯了错误,或者它根本不起作用。如果是这样的话,是否有其他安全的方式来获取触发相应云功能的用户的uid?
不,这对于Firestore Cloud Functions来说是不可能的:对于这些 Cloud Functions,context参数不包含触发该函数的用户的身份验证信息。
请注意,实时数据库云函数可以实现这一点:它们为通过参数触发函数的用户提供身份验证信息context。
一种解决方法是在 Firestore 文档中添加一个包含用户 uid 的字段。
如果您使用此解决方法,根据您的具体用例(您在问题中写了“是否有其他安全方法”),您可以编写一个安全规则验证来检查该字段是否包含用户的 uid(例如 )request.resource.data.userId == request.auth.uid。
| 归档时间: |
|
| 查看次数: |
947 次 |
| 最近记录: |