2011-11-06 1 views
1

Je travaille sur un projet qui nécessite des paramètres de sécurité/confidentialité granulaires personnalisés. Fondamentalement, je dois être en mesure de restreindre l'accès aux données en fonction de l'utilisateur exécutant la requête. Assez facile, non? Voici un couple de gotchyas si ..Autorisations au niveau de la ligne ou confidentialité de type facebook dans ASP.NET MVC 3?

  1. Les utilisateurs doivent être enregistrés dans un tableau des utilisateurs. La création de comptes d'utilisateur Windows, d'utilisateurs de serveur SQL ou de rôles de serveur SQL est inacceptable pour cette application.
  2. Les critères de sécurité doit être défini par un certain nombre de sources, à savoir l'emplacement d'un utilisateur, payer qualité, spécialité, etc ..

En ce moment, nous mettons en œuvre en générant un SQL « where » et l'ajouter à la fin de chaque requête avant qu'elle ne soit exécutée. Cela nous empêche de tirer parti de technologies plus récentes, telles que Entity Framework, et entraîne également d'autres limitations et problèmes de performance.

Toute aide ou idée serait grandement appréciée. S'il vous plaît laissez-moi savoir si des précisions supplémentaires sont nécessaires.

Merci! Jason

+0

Vous pouvez le faire avec EF aussi. – SLaks

Répondre

1

Vous pouvez toujours utiliser Entity Framework. Il y a deux façons de le faire avec EF:

  • Créer un fournisseur d'emballage personnalisé qui injecte WHERE clauses, comme this.

  • seulement exposer IQueryable s qui contiennent pré Where() « des données d (mais méfiez-vous des relations)

  • Jeter une exception dans l'entité cteur si l'utilisateur actuel n'a pas accès à elle (peut-être pas une bonne idée)

+0

Bien que cela semble être la solution que je cherche, j'ai quelques questions ... Je ne suis pas sûr si je suis juste le code incorrectement ou pas mais je n'arrive pas à comprendre exactement où je serais injecter la clause 'where'. Pourriez-vous poster un extrait qui me mène dans la bonne direction? – Jason

+0

Pour quelle option? – SLaks

+0

Pour créer un fournisseur d'emballage personnalisé qui injecte la clause 'WHERE' – Jason

Questions connexes