Pregunta

I se interesó en CouchDB recientemente y quería probar y formar una pequeña aplicación alrededor de ella.

La forma cómo invition mi sistema actualmente es que las peticiones vienen proporcionando dos cosas, un documento de identidad, una clave de API y un formato. El ID es _ID de un documento en la base de datos, la clave de la API es un _id de otro documento que tiene una propiedad de { "válida": verdadero / falso}, y el formato es el formato que deseen volver. Si la clave de la API es válida, el sistema generaría la página espectáculo para el id dado, en el formato solicitado. De lo contrario se devolverá un código de 403 estadísticas.

Por desgracia no puedo encontrar una manera de tirar de otro documento de una página de demostración. Me estoy empezando CouchDB, así que tal vez hay algo simple aquí que me falta.

¿Fue útil?

Solución

Con una función _show, hay tres partes implicadas:

  1. El documento de diseño
  2. La función de presentación dentro del documento de diseño
  3. El documento adicional que se muestra

Para el formato de URL /db/_design/ddoc/_show/my_show_func/otherdoc:

  1. El documento de diseño es _design/ddoc
  2. La función de presentación es shows.my_show_func dentro de ese documento de diseño
  3. El documento que se muestra tiene un _id de otherdoc

Estos son los sólo dos documentos involucrados. La única manera que puedo pensar para hacer lo que usted describe es tener un documento de diseño por clave de API. El usuario consultar /db/_design/API_KEY/_show/other_doc_id. CouchDB se relajó. No hay nada malo con miles de documentos de diseño con funciones _show idénticos o similares. Usted coul utiliza el método HTTP COPY para clonar un documento de diseño de base a una nueva clave de API, según sea necesario. Posteriormente, se podría revocar una clave de API mediante la supresión del documento de diseño. Sin embargo, eso es, obviamente, un enfoque único, vale la pena un segundo pensamiento.

Una consideración final es (con el valor predeterminado CouchDB, no hay proxies inversos, mod_security, etc.) si un usuario puede leer un documento, que pueden leer toda la base de datos (por ejemplo, de la consulta _all_docs.) Por lo tanto mostrar funciones son una conveniencia para el software, pero no una pasarela de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top