2012-03-24 32 views
5

Necesito desarrollar un sitio en Drupal 7. Tengo algunos tipos de contenido con campos de archivo en CCK. Y el acceso a los nodos de estos tipos solo debe otorgarse al rol de usuario específico de Drupal. Y en cualquier momento el administrador del sitio debe poder hacer que estos Nodos sean 'públicos' o 'privados'.Drupal 7: cómo restringir el acceso de archivos a roles de usuario específicos

Puedo hacer que los nodos sean visibles solo para roles de usuario específicos, pero esto no es lo suficientemente seguro. Si el usuario anónimo conoce la ruta de archivo (www.misitio.org/archivos_de_hidden/archivo1), puede descargarlo.

¿Cuál es la forma más elegante de resolver este problema?

Gracias de antemano.

+0

No he usado este módulo, pero lo voy a instalar. Le permite restringir el acceso a los archivos por rol. https://drupal.org/project/file_access –

+1

Otra restricción de archivos privados por rol, pero no en alfa https://drupal.org/project/private_files_download_permission –

Respuesta

9

Salida esta documentación aquí: http://drupal.org/documentation/modules/file

En concreto, la sección titulada "ubicaciones de archivos de la gestión y el acceso", que habla de la creación de un almacén de datos privada (todo el apoyo de Drupal 7, que sólo necesita ser configurado) .

Parafraseando, crear una carpeta tales como:

sites/default/files/privadas

poner un archivo .htaccess en esa carpeta con la siguiente para evitar el acceso directo a los archivos a través de la web:

Denegar de todos

(la documentación afirma que el siguiente paso hace los pasos anteriores de forma automática, no he probado que, lamentablemente, pero puede ser capaz de ahorrar algo de tiempo si se salta los dos pasos anteriores)

Entrar en el administrador de contenidos Drupal interfaz, vaya a /admin/config/media/file-system, configure la URL privada y seleccione Archivos privados servidos por Drupal como método de descarga predeterminado.

Con el fin de definir el acceso de grano fino a los nodos y campos, puede utilizar de acceso al contenido:http://drupal.org/project/content_access

También tendrá que editar sus tipos de contenido y establecer los campos del archivo/carga de imágenes para guardar los archivos cargados en archivos privados en lugar de archivos públicos.

En este punto, los permisos de nivel de nodo y campo determinarán si los usuarios tienen permiso para acceder a los archivos que se servirán a través de los ganchos de menú que verifican las credenciales antes de servir el archivo.

Espero que esto ayude.

+1

En realidad, también puede configurar el directorio privado para que esté fuera de su raíz web, como (en relación con la raíz del servidor)/home/[su-cuenta]/privada. Asegúrese de que Drupal pueda escribir en el directorio, que según la configuración de su servidor puede tener una variedad de permisos diferentes y privilegios de grupo. – Alex

+0

¡Muchas gracias! Marcaré esta respuesta como 'aceptada'. Lo siento, no puedo marcarlo como 'útil', porque tengo reputación <15 – mechmsk

+0

Sin preocupaciones, feliz de haber sido de ayuda. – Alex

Cuestiones relacionadas