我嘗試了以下安全規則爲我的應用程序,但我遇到了問題。我有一個用戶在我火力點和唯一ID爲2
{
"rules": {
"users": {
"$user": {
".read": "$user == auth.id",
".write": "$user == auth.id"
}
}
}
}
我檢查了,當我做".write": "$user == 2"
,我將無法在火力寫的,但是當我做".write": "$user == '2'"
,我會能夠在firebase上撰寫。
另一方面,當我做".write": "auth.id == 2"
,我將能夠寫在firebase。
看來,$用戶被視爲一個字符串,而auth.id被視爲一個數字。我檢查了https://www.firebase.com/docs/security/的文檔,但事實證明這對這件事毫無幫助。
在一次絕望的嘗試中,我嘗試了".write": "$user == auth.id.toString()"
這當然給了我這個錯誤:「6:29:類型錯誤:對目標函數調用不是函數。
任何人都可以提供一些關於此事的建議嗎?
我能想到的唯一解決方法是還包括「userId」作爲$ user用戶的子元素,它將被讀作數字值而不是字符串。
加藤的權利,雖然這實際上是我們結束時的一個錯誤。你的規則應該按原樣工作。作爲臨時解決方法,您可以將規則更改爲「$ user ==''+ auth.id」將auth.id轉換爲字符串。但是這不應該是長期的。 –
感謝您的幫助:)它運行得很漂亮 –
正如@MichaelLehenbauer提到的,這是我們最終的一個錯誤。現在這個問題應該得到解決(將auth.id作爲一個字符串正確對待),但如果遇到任何其他問題,請聯繫我們。 –