2014-04-23 4 views
0

J'essaie d'obtenir des autorisations de niveau objet dans MVC. J'ai cherché partout mais je peux seulement trouver des exemples qui ont 3 ans et plus et je n'arrive pas à le faire fonctionner.Création d'autorisations de niveau objet dans MVC

Dire que j'ai 2 modèles:

public class Supplier 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<ApplicationUser> LinkedUsers { get; set; } 
} 

et

public class ApplicationUser : IdentityUser 
{ 
    public string Id { get; set; } 
    public virtual ICollection<Supplier> LinkedSuppliers { get; set; } 
} 

J'ai aussi pour mes autorisations.

public enum SupplierUserPermissions 
{ 
    Edit = 1, 
    View = 2, 
} 

Chaque ApplicationUser peut être lié à un grand nombre Suppliers et chaque Supplier peuvent être liés à un grand nombre ApplicationUsers

Entity Framework a créé une table avec FK de l'ID utilisateur et l'ID du fournisseur.

Comment puis-je créer des autorisations au niveau de l'objet pour chaque utilisateur? Par exemple, un utilisateur devrait être en mesure de seulement Voir certains fournisseurs, mais peut-être qu'ils peuvent Modifier un autre.

Comment devrais-je construire mes modèles ou comment puis-je le mieux mettre en œuvre? Je suis sûr que la sécurité basée sur les rôles standard ne le coupera pas, du moins pas proprement, ou est-ce que je me trompe? Editer: J'utilise ASP Identity 2 pour mon authentification.

+0

Qu'est-ce que le système d'authentification utilisez-vous? Formulaires, Windows? Votre objet utilisateur est-il lié à ce système, par ex. Votre userId est-il contenu dans un cookie d'authentification? –

+0

@PaulTaylor J'utilise ASP Identity 2. Oui, mon objet utilisateur est lié avec lui mais je peux l'étendre si nécessaire. J'ai ajouté cela à la question maintenant – Alex

Répondre

0

Un filtrage global pourrait être utilisé pour atteindre cet objectif. un coup d'oeil à cette question et la réponse ->making a global filter for entity framework

Cela devrait vous donner un bon point de départ sur la façon de mettre en œuvre le filtrage global pour Entity Framework