2009-06-12 7 views
3

Les fichiers .htaccess ne sont pas mon point fort.Htaccess et téléversements

J'ai des téléchargements de documents vers/uploads. L'utilisateur devrait être en mesure de voir les documents qu'il vient de télécharger en cliquant sur le lien du document qui apparaît via ajax une fois le téléchargement terminé.

Cependant, je voudrais pouvoir protéger par mot de passe le dossier/uploads MAIS permettre à l'utilisateur actuel d'afficher le document cliqué sans qu'une demande de mot de passe n'apparaisse.

Est-ce possible dans .htaccess?

Merci pour vos suggestions.

Répondre

0

Je ne pense pas que ce soit possible dans .htaccess - depuis .htaccess n'a aucun moyen de savoir quel utilisateur qui fichiers téléchargé. Même si c'est le cas (par exemple en mettant des fichiers dans uploads/username/), je ne pense pas que les fichiers .htaccess sont la voie à suivre. Je pense que vous voudrez probablement appliquer cela au niveau de l'application.

1

Vous pouvez utiliser l'authentification par cookie (mod_auth_cookie) pour accorder l'accès via htaccess pour un emplacement particulier.

Je ne suis pas sûr si le chemin d'accès au cookie pour le fichier spécifique fonctionnera, mais cela vaut la peine d'essayer.

Vous feriez mieux de le faire dans le calque de l'application.

EDIT: This may be a better solution

2

À moins que vous n'utilisiez HTTP auth pour authentifier votre utilisateur avant le téléchargement, cela ne peut probablement pas être fait simplement avec .htaccess. Vous devez connaître le propriétaire du fichier et le comparer avec l'utilisateur actuel, ce qui est bien au-delà des capacités du serveur Web habituel. Si vous pouvez utiliser Nginx ou Lighttpd, vous pouvez utiliser l'en-tête X-Accel-Redirect/X-Sendfile. Il y a aussi un module pour Apache2 appelé mod_xsendfile. Faites toute demande à /uploads passer de manière transparente à travers votre application, vérifiez l'accès puis dites au serveur web d'envoyer le fichier. Bien que cela nécessite la possibilité de configurer le serveur Web (ce qui n'est parfois pas possible), il s'agit probablement de la solution la plus correcte et la plus universelle.

Voici quelques liens utiles: