2011-05-23 3 views
2

Mes compétences Google échouent sur ce point. Je suis à la recherche de la "bonne façon" de faire des droits basés sur les données dans ASP.Net MVC (3).Autorisations/autorisations basées sur les données dans ASP.Net MVC 3

Avec les droits habituels, il suffit de connaître l'utilisateur et la route peut être effectuée avec l'attribut [Authorize], mais cela ne semble pas fonctionner avec les droits basés sur les données b/c de la nécessité d'avoir une connexion au magasin de données.

L'approche évidente de l'insertion d'une vérification dans les méthodes d'action de la bonne façon?

+0

Qu'est-ce qu'un "droit basé sur les données?" Voulez-vous dire "sécurité" ou "autorisation"? Essayez de rechercher une "sécurité basée sur des tables dans ASP.NET MVC". –

+0

@Robert -exactement, j'ai mis à jour le titre pour refléter cela –

+0

http://stackoverflow.com/questions/1482135/custom-authorizeattribute –

Répondre

1

L'approche évidente d'insérer un contrôle dans les méthodes d'action de la bonne façon ?

C'est ce que je fais.

if (!userHasAuthorization) 
    return view("Unauthorized"); 

C'est de loin le moyen le plus simple. Pour vous assurer de ne faire qu'une seule fois "userHasAuthorization", vous pouvez mettre une méthode dans votre référentiel ou couche de service qui vérifie l'autorisation, et l'utiliser à la place de la valeur booléenne userHasAuthorization.

0

Sans savoir ce que sont les "droits basés sur les données". Je crois que les filtres d'action personnalisés vous apporteront ce que vous voulez. Cela vous permet de gérer tout ce dont vous avez besoin autour de l'autorisation avec le contexte de la route, l'utilisateur, etc. Donne plus de contrôle à grain fin. Vous donne également la réutilisation de sorte que vous n'avez pas besoin de brancher si des déclarations dans vos méthodes d'action.

http://msdn.microsoft.com/en-us/library/dd381609.aspx

+0

Je pense que ce qu'il demande est: Comment recherchez-vous les valeurs d'autorisation de la base de données sans étroitement couplant votre 'AuthorizeAttribute' personnalisé à la base de données? C'est quelque chose que je me suis souvent demandé. La coutume 'AuthorizeAttribute' n'a pas accès à votre dépôt, mais au moment où vous avez déjà entré la méthode d'action, il est trop tard. –

+0

Ensuite, je voudrais aller avec cette approche que j'ai mentionné ici, le filtre d'action personnalisé vous permet de revenir avant d'entrer dans la méthode d'action. – Slappy

0

Vous pouvez créer un filtre d'action personnalisé dérivé de l'attribut [Authorize] qui utilise le magasin de données pour vérifier l'autorisation.

+0

Des détails sur la façon de faire cela - c'est-à-dire, comment donner à la classe MyAuthorize une instance de 'IDBConnection'? –