2009-10-27 6 views
1

Je commence à concevoir l'infrastructure d'application web développée avec ASP.NET MVC preview 2 comme une expérience d'apprentissage. J'ai mon propre modèle de domaine et schéma de base de données que je souhaite utiliser pour l'authentification. Je souhaite effectuer une variante d'authentification de base de rôle. Cependant, je n'arrive pas à comprendre comment faire cela.Asp.net Membership & Authentication

J'ai un utilisateur qui a accès à un "Blog". Comment puis-je effectuer une autorisation lorsque l'utilisateur est dans le rôle prévu, mais où l'utilisateur appartient au "Blog"

Un fournisseur de rôle personnalisé est-il nécessaire ou dois-je effectuer la logique dans un attribut d'autorisation pour le actions du contrôleur; interroger BlogId de l'utilisateur authentifié et y exécuter la logique d'autorisation. Je ne suis pas au courant de la façon de le faire actuellement, mais s'il y en a, corrigez-moi.

Si possible, un exemple de fournisseur de rôle personnalisé ou d'attribut d'autorisation qui fournirait cette fonctionnalité serait idéal.

Merci

Répondre

1

On dirait que ce que vous voulez est la possibilité d'avoir à la fois un rôle et une vérification de la propriété. Par exemple, un utilisateur peut avoir le rôle d '«auteur», mais il doit également avoir une relation de propriété avec un blog particulier pour être en mesure de créer ou de mettre à jour des entrées de blog. L'utilisation d'un fournisseur de rôle standard avec un attribut d'autorisation personnalisé qui vérifie la propriété - essentiellement une relation de clé étrangère particulière entre l'entité pour l'action et l'entrée utilisateur actuelle dans la base de données - semble être une approche raisonnable ce.

Vous pouvez trouver un exemple de code sur my answer à ce similar question.

+0

Merci pour la réponse rapide. utiliserait le conflit d'attribut authorize avec la mise en cache de sortie; Je me souviens d'avoir lu quelque part à propos de ça. –

+0

Regardez la source de AuthorizeAttribute sur http://www.codeplex.com/aspnet et découvrez comment ils gèrent les problèmes de mise en cache. Dans mon exemple de code, vous pouvez voir que j'appelle SetCachePolicy() qui implémente fondamentalement le code qui aborde cela d'une manière similaire à AuthorizeAttribute lui-même. – tvanfosson

+0

Cela semble être exactement ce dont j'ai besoin. Je vous remercie. –