setPersistenceEnabled(true)
के माध्यम से दृढ़ता से सक्षम डेटा को साफ़ करने का कोई तरीका है?- या अंत में डिवाइस पर पहले संग्रहीत उपयोगकर्ता डेटा तक पहुंच को पढ़ने से रोकें?
- और अतिरिक्त प्रश्न - क्या कोई डेटा यह जांचने का कोई तरीका है कि कोई डेटा सिंक करने का इंतजार कर रहा है या नहीं?
मेरे ऐप में जब मैं लॉग आउट कर रहा हूं तो डीबी साफ़ करना चाहता हूं और वह पुष्टि करता है कि अनसंक्रनाइज़ किए गए परिवर्तन हटा दिए जाएंगे। इस एप्लिकेशन को कई लोगों द्वारा टेबलेट पर उपयोग किया जाएगा, और कई प्रति उपयोगकर्ता संग्रहीत डेटा वहाँ हो जाएगा, इसलिए मैं करने के लिए डिवाइस पर संग्रहीत अनावश्यक डेटा साफ़ करना चाहते:लॉगआउट के बाद फायरबेस स्थिरता साफ़ करें
- छोटा संग्रहण उपयोग
- रोकने पढ़ें उपयोगकर्ताओं के डेटा
से अनधिकृत व्यक्ति यह एक सुरक्षा दोष किसी भी उपयोगकर्ता क्योंकि, चाहे या नहीं पर हस्ताक्षर किए है, सभी पहले से डाउनलोड डेटा तक पहुँच पढ़ा है! सौभाग्य से हमने वहां पहुंच नहीं लिखा है।
मैं अपने दम पर db स्पष्ट करने के लिए, ऑफ़लाइन और ऑनलाइन दोनों मोड में कोशिश की, लेकिन डेटा अभी भी डिवाइस पर जारी रहती है:
// first clear all data on my own
FirebaseDatabase db = FirebaseDatabase.getInstance();
db.goOffline(); // even when I clear db in online mode data persist on mobile device
db.getReference().setValue(null);
// and then logout
FirebaseAuth.getInstance().signOut();
db.goOnline();
जैसे डेटा संरचना:
{
"someList": {
"userId1": {
"itemId11": {
"name": "name 11"
},
"itemId12": {
"name": "name 12"
},
...
"itemId1N": {
"name": "name 1N"
}
}
"userId2": {
"itemId21": {
"name": "name 21"
},
"itemId22": {
"name": "name 22"
},
...
"itemId2N": {
"name": "name 2N"
}
}
}
}
मेरे नियमों:
{
"rules": {
".read": "false",
".write": "false",
"someList": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
क्या आपने 'mRef.keepSynced (false) की कोशिश की है;' –
@ शाजराणा दुर्भाग्यवश किसी भी स्थान पर 'keepSynced (false)' को जोड़कर कुछ भी नहीं बदलता है। केवल तभी जब मैं अंतिम 'db.goOnline()' हटा देता हूं तो मैं वास्तव में पिछले उपयोगकर्ता डेटा नहीं पढ़ सकता। लेकिन मैं नए डेटा को "लॉग आउट" उपयोगकर्ता के रूप में लिख और पढ़ सकता हूं। और जब मैं 'db.goOnline()' (डीबी को सिंक में रखने के लिए) कहता हूं तो लॉग इन करने के बाद यह बैकएंड पर मेरे पुराने डेटा को साफ़ करता है और उसी समय में "लॉग आउट" उपयोगकर्ता के रूप में जोड़ा गया नया डेटा जोड़ता है। – sosite
असल में जब आप 'setPersistenceEnabled (true)' फ़ायरबेस सेट करते हैं तो आपके डिवाइस पर कैश फॉर्म में डेटा संग्रहीत करता है ताकि जब आप ऑफलाइन हों तो यह डेटा दिखा सके –