2017-06-05 2 views
0

J'essaie d'utiliser ASP.NET MVC pour avoir une application web qui va prendre des détails sur un élément parent et permettre le téléchargement et le partage de fichiers qui sont associés et stockés sous le nom de l'élément parent.Comment appliquer des autorisations de sécurité à des fichiers statiques avec ASP.NET MVC?

Les fichiers que je veux protéger sont stockés ainsi: ~/Files/{Point-GUID}/{Nom du fichier} {ext}

L'article-Guid peut être utilisé pour interroger la db. autorisations de sécurité pour l'élément. (les utilisateurs sont enregistrés en tant que SID AD)

Je dois savoir comment ASP.Net répond aux demandes de fichiers pour ces fichiers dans le chemin ~/Files/et utilise le/GUID-Item/pour vérifier les permissions de sécurité avant de servir le fichier à l'utilisateur, et lancer des erreurs d'authentification si l'utilisateur n'est pas connecté ou n'a pas accès à l'élément parent.

J'apprécierais des liens ou des conseils sur où devrais-je commencer ici. Merci d'avance.

Répondre

1

Je crée souvent une classe d'autorisation personnalisée dérivée de la classe AuthorizeAttribute. C'est une façon de créer un filtre d'autorisations personnalisé sur n'importe quelle action du contrôleur.

public MyPermissionsFilter : AuthorizeAttribute 
{ 
    private readonly string _permissionName; 

    public PermissionsFilter(string permissionName) 
    { 
     _permissionName = permissionName; 
    } 
} 

Remplacer la méthode OnAuthorization.

public override void OnAuthorization(AuthorizationContext filterContext) 
{ 
    //Perform Check with _permissionName 
    //Redirect to error/unauthorised 
} 

Puis décorez l'action de votre contrôleur.

[HttpPost] 
[PermissionsFilter("PermissionName")] 
public void SaveFile(HttpPostedFileBase file) 
{ 
    //Do file stuff 
} 

J'espère que c'est ce que vous voulez et est d'une certaine aide. Addition: J'ai renommé GetFile en SaveFile .. et c'est ce qui aurait dû être.

J'ai aussi pensé à cela encore et ce n'est peut-être pas la meilleure solution pour vous. Si vous devez vérifier les autorisations d'un utilisateur pour accéder à un fichier unique en fonction de son GUID, il est préférable d'appeler la vérification de sécurité dans la méthode SaveFile qui reçoit le paramètre de base de fichier. Vous pouvez obtenir le guid à partir du nom de fichier puis passer à la vérification des autorisations. Si cela échoue, redirigez-vous simplement vers la vue appropriée.

+0

Malheureusement, j'ai déjà fait cette partie essentiellement. Le problème est que les fichiers sont toujours disponibles par lien direct sans vérification des autorisations. Merci pour votre réponse. – Rem

+0

Ok ... pas de soucis ... merci – Wheels73

+0

Désolé, 2 questions ... Comment votre méthode GetFile Controller est-elle fournie avec HttpPostedFileBase pour vos fichiers? Est-ce que cela empêche l'accès direct au fichier via son URL? – Rem