Es ist ein einfach: Design-Dokument mit validate_doc_update
Funktion in der Datenbank erstellen, in dem Sie Dokumente steuern mögen, dass so etwas wie dies funktioniert:
function(newDoc, oldDoc, userCtx, secObj){
if('_admin' in userCtx.roles) return; // skip anonymous in Admin Party case;
if(!userCtx.name && newDoc._deleted){
throw({'forbidden': 'auth first before delete something'});
}
}
Die Idee ist einfach: Wenn userCtx
kein Name angegeben ist, bedeutet dies, dass der Benutzer anonym ist und wenn in unserer neuen Dokumentversion das spezielle Feld _deleted
als true
festgelegt ist - Dokument wird gelöscht (Änderungen werden jedoch noch nicht auf der Festplatte gespeichert). Also prüfen wir diese Felder und werfen eine verbotene Ausnahme, wenn die Bedingung erfüllt ist. Wir machen auch eine Ausnahme für Admin Party Fall gibt es alle namenlos, aber hat _admin
Rolle, also müssen wir sie überspringen. Und jetzt auf jeden Versuch, regelmäßige Dokument durch anonyme Benutzer löschen er nächste HTTP-Antwort erhalten:
HTTP/1.1 403 Forbidden
Server: CouchDB/1.3.0 (Erlang OTP/R15B03)
Date: Thu, 25 Apr 2013 18:48:51 GMT
Content-Type: application/json
Content-Length: 68
Cache-Control: must-revalidate
{"error":"forbidden","reason":"auth first before delete something"}
Vielen Dank! Sehr hilfreiche Antwort! –