6
votes

Comment restreindre l'accès aux fichiers PDF sur mon serveur?

J'utilise ASP.NET MVC. J'ai un accès restreint au site Web à l'aide de l'authentification des formulaires ASP. Cependant, les pages Web contiennent des liens vers des fichiers PDF sur le serveur que je souhaite également protéger.

Par exemple, l'utilisateur peut parcourir FOO.com et FOO.com/Account/Logon. Une fois qu'ils sont connectés, ils peuvent accéder à FOO.com/Category/bar qui présente la vue à Bar.aspx. Sur cette vue est un lien vers foo.com/files/theta.pdf qui se charge dans le navigateur tout à fait. Cependant, je ne veux pas foo.com/files/theta.pdf accessible à partir du navigateur, à moins que l'utilisateur ne soit authentifié.

Comment empêcher un utilisateur d'accéder à FOO.com/files/theta.pdf directement à partir de son navigateur sans d'abord authentifier à Foo.com/Account/Logon?


0 commentaires

4 Réponses :


8
votes

Passez la demande via un contrôleur et renvoyez un FileSult . Vous pouvez appliquer n'importe quelle sécurité que vous souhaitez à la méthode du contrôleur, soit à l'aide de l'attribut Autoriser , soit en cochant les autorisations à l'intérieur de la méthode du contrôleur.

Il y a un exemple de ce code à Cette question < / a>, qui illustre comment renvoyer un fichier image. Il suffit de renvoyer votre PDF au lieu du fichier image et utilisez application / pdf comme type MIME.



4
votes

Si vous souhaitez restreindre tous les accès au répertoire / fichiers code>, vous pouvez simplement utiliser un élément code> Emplacement code> dans votre web.config code> pour restreindre Accès.

EG P>

<location path="~/files">
  <system.web>
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
</location>


1 commentaires

Ne limite pas les fichiers statiques, ils sont géré par le module de gestionnaire StaticFilemodule, qui n'utilise pas votre configuration d'autorisation.



1
votes

Utilisez la fileresult, ce qui, selon moi, est une action intégrée. Cela va envoyer des données binaires que vous pouvez avoir toutes sortes d'autorisations autour de:

http://msdn.microsoft.com /en-us/library/system.web.mvc.fileresult.aspx


1 commentaires

Comment cela limite-t-il l'accès au support si un utilisateur connaît l'URL aux médias?



0
votes

Si vous avez utilisé ASP.NET CORE, vous pouvez utiliser Autorisation basée sur les ressources

La stratégie d'autorisation dépend de la ressource accédée. Considérez un document qui possède une propriété d'auteur. Seul l'auteur est autorisé à mettre à jour le document. Par conséquent, le document doit être récupéré à partir du magasin de données avant que l'évaluation de l'autorisation puisse se produire.


0 commentaires